rocktmq 消息延时清空_RocketMQ-延时消息

一、延时消息的使用使用比较简单,指定message的DelayTimeLevel即可。示例代码如下:Message msg = new Message("DelayTopicTest","TagA",("Hello RocketMQ ").getBytes(RemotingHelper.DEFAULT_CHARSET) );//设置延迟级别,注意这里的3不是代表延迟3smsg.setDelayTi...
摘要由CSDN通过智能技术生成

一、延时消息的使用

使用比较简单,指定message的DelayTimeLevel即可。示例代码如下:

Message msg = new Message("DelayTopicTest","TagA",("Hello RocketMQ ").getBytes(RemotingHelper.DEFAULT_CHARSET) );

//设置延迟级别,注意这里的3不是代表延迟3s

msg.setDelayTimeLevel(3);

SendResult sendResult = producer.send(msg);

目前rockatmq支持的延迟时间有:

1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

以上支持的延迟时间在msg.setDelayTimeLevel对应的级别依次是1,2,3。。。。

二、实现原理

延迟队列的核心思路

所有的延迟消息由producer发出之后,都会存放到同一个topic(SCHEDULE_TOPIC_XXXX)下,不同的延迟级别会对应不同的队列序号,当延迟时间到之后,由定时线程读取转换为普通的消息存的真实指定的topic下,此时对于consumer端此消息才可见,从而被consumer消费。

延迟消息存放的结构

consumequeue

├── SCHEDULE_TOPIC_XXXX

│ ├── 0

│ │ └── 00000000000000000000

│ ├── 1

│ │ └── 00000000000000000000

│ ├── 2

│ │ └── 00000000000000000000

│ ├── 3

│ │ └── 00000000000000000000

│ ├── 4

│ │ └── 00000000000000000000

.....

.....

├── DelayTopicTest

│ ├── 0

│ │ └── 00000000000000000000

│ ├── 1

│ │ └── 00000000000000000000

│ ├── 2

│ │ └── 00000000000000000000

│ └── 3

│ └── 00000000000000000000

其中不同的延迟级别放在不同的队列序号下(queueId

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值