brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerIP1 = 10.10.10.9
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
messageDelayLevel = 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 4h 5h
enablePropertyFilter = true
timerMaxDelaySec=2592000
这是我目前的配置,单节点,客户端在访问的时候会产生一个错误,如下图
Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 13 DESC: timer message illegal, the delay time should not be bigger than the max delay -1702967296ms; or if set del msg, the delay time should be bigger than the current time BROKER: 10.10.10.9:10911
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/
at org.apache.rocketmq.client.impl.MQClientAPIImpl.processSendResponse(MQClientAPIImpl.java:779) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:619) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:601) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:545) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:907) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:643) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1426) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:370) ~[rocketmq-client-5.0.0.jar!/:5.0.0]
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:654) ~[rocketmq-spring-boot-2.2.3.jar!/:2.2.3]
消息最大时间是不能自定义设置超过3天以上吗?还是我的配置内容缺少了,有没有大佬帮我解答下
在 RocketMQ 中,timerMaxDelaySec 是一个重要的参数,它用于设置消息延迟定时器的最大延迟时间。默认情况下,该参数的值为 24 小时。
如果要更改 timerMaxDelaySec 参数的值,需要编辑 broker.conf 文件,并将 timerMaxDelaySec 参数的值设置为您想要的值。该文件位于 RocketMQ 的 conf 目录中。以下是一个示例配置:
是的,RocketMQ的消息最大延迟时间不能超过3天。在你的配置中,
timerMaxDelaySec
的值设置为2592000秒(约3天),这是正确的。如果你想要设置更长的延迟时间,可以考虑使用其他类型的消息,如定时任务或延时消息。从你给出的错误信息来看,问题可能出在你的
timerMaxDelaySec
配置上。timerMaxDelaySec
是用于控制定时消息的最大延迟时间,单位为秒。默认值是86400
(一天),而你设置的值为2592000
(一个月),这超出了 RocketMQ 的最大延迟时间限制。RocketMQ 的
messageDelayLevel
参数可以设置不同的延迟级别,但最大的延迟时间不能超过-1702967296ms
(约等于1342172800
秒,即 13 天)。如果你确实需要发送延迟超过 13 天的消息,你需要对 RocketMQ 的源代码进行修改,增加
timerMaxDelaySec
的最大值。但这可能会导致其他未知的问题,因此不建议这样做。如果你只是想在短时间内测试一下大延迟的消息,你可以尝试减少
timerMaxDelaySec
的值,或者使用messageDelayLevel
参数来设置更小的延迟级别。在github上找到如下答案
https://github.com/apache/rocketmq/issues/5376
试试看