/civism-rocket

在rocketMQ基础上,包装支持了任意时间的延时消息

Primary LanguageJava

设计

1.rocketMQ默认支持18个等级 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

2.支持任意延时,设计逻辑为拆分法,用默认的rocketMQ去支持 任意时间都能够通过上面的时间组装出来

3.在1分中内需要发送的采用时间轮方式,发送出去

4.延时会走 guava-topic,不会走业务需要的topic,只有当真正需要发送的时候才会走业务topic

TODO: 5.考虑1分钟内由于强制重启等所带来的数据丢失问题

使用手册

需要手动创建:topic : guava_topic group: guava-group 在业务中,一定不要去使用这个topic以及分组,可以认为系统默认占用

优点

  • 不需要依赖除rocketMQ以外的任何中间间,可以算是0侵入
  • 支持任意时间纬度的延时
  • 实现简单,浅显易懂,安全与否取决于rocketMQ
  • rocketMQ所有的优点

缺点

  • 极端情况下会有一分钟的数据丢失
  • 增大了rocketMQ的自带的延时压力
  • rocketMQ所有的缺点