rocketmq messagedelaylevel 能定义多少延时级别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rocketmq messagedelaylevel 能定义多少延时级别相关的知识,希望对你有一定的参考价值。
参考技术A RocketMQ 支持定时消息,但是不支持任意时间精度,仅支持特定的 level,例如定时 5s, 10s, 1m 等。其中,level=0 级表示不延时,level=1 表示 1 级延时,level=2 表示 2 级延时,以此类推。如何配置
在服务器端(rocketmq-broker端)的属性配置文件中加入以下行:
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
描述了各级别与延时时间的对应映射关系。
这个配置项配置了从1级开始,各级延时的时间,可以修改这个指定级别的延时时间;
时间单位支持:s、m、h、d,分别表示秒、分、时、天;
默认值就是上面声明的,可手工调整;
默认值已够用,不建议修改这个值。
如何发送延时消息
发送延时消息只需要在客户端(rocketmq-client端)待发送的消息( com.alibaba.rocketmq.common.message.Message )中设置延时级别即可。
“设置消息延时 10s 消费”的 Producer 端代码如下:
1
2
3
4
5
Message msg = new Message(topic, tags, keys, body);
msg.setDelayTimeLevel(3);
...
SendResult sendResult = getMQProducer().send(msg);
...
RocketMQ(15)——RocketMQ控制台
RocketMQ控制台
RocketMQ提供了一个管理控制台,可以查看RocketMQ的相关信息和进行一些管理操作。RocketMQ在Github上专门有一个仓库用来存放一些与RocketMQ相关的项目,地址是https://github.com/apache/rocketmq-externals
,控制台就是其中一个。如果需要使用控制台,需要从Github上clone https://github.com/apache/rocketmq-externals
仓库到本地,然后进入到rocketmq-console
。它是基于Spring Boot实现的,配置信息都定义在src/main/resources/application.properties
文件中,需要通过rocketmq.config.namesrvAddr
属性指定需要连接的NameServer地址,默认为空,即默认将采用系统属性、环境变量等方式获取NameServer的地址。指定了NameServer的地址后可以通过mvn spring-boot:run
的方式启动RocketMQ控制台。也可以把它打包为一个jar包,然后通过java -jar rocketmq-console-xxx.jar
启动,NameServer的地址也可以按照Spring Boot的规范放在命令行后指定,如java -jar target/rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr=localhost:9876
。一开始在不指定NameServer的地址也可以启动RocketMQ Console,可以在启动后再在其OPS面板下指定NameServer地址。RocketMQ Console默认监听的是80
以上是关于rocketmq messagedelaylevel 能定义多少延时级别的主要内容,如果未能解决你的问题,请参考以下文章