美文网首页0.面试技能
rocketmq-延迟消息实现

rocketmq-延迟消息实现

作者: 划水者 | 来源:发表于2018-08-18 17:55 被阅读0次

    用过rocketmq的童靴们肯定知道,它的延迟消息的时间不是任意时间片,而是仅支持18个固定的时间段,默认的配置是messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h,分别代表延迟level1-level18,对应的延迟时间可以通过配置修改,下面谈谈具体它是怎么实现的

    1 所有的延迟消息到达broker后,会存放到SCHEDULE_TOPIC_XXX的topic下(这个topic比较特殊,对客户端是不可见的,包括使用rocketmq-console,也查不到这个topic)

    2 SCHEDULE_TOPIC_XXX这个topic下存在18个队列,每个队列中存放的消息都是同一个延迟级别消息

    3 broker端启动了一个timer和timerTask的任务,定时从此topic下拉取数据,如果延迟时间到了,就会把此消息发送到指定的topic下,完成延迟消息

    以上就是rocketmq延迟消息的实现步骤,如果大家有兴趣,也可以看看JDK的delayQueue的实现,对标一下

    相关文章

      网友评论

        本文标题:rocketmq-延迟消息实现

        本文链接:https://www.haomeiwen.com/subject/ivlmbftx.html