关于设置rocketmq的timerMaxDelaySec时间问题[阿里云消息队列MQ]

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天以上吗?还是我的配置内容缺少了,有没有大佬帮我解答下

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
3 条回复 A 作者 M 管理员
  1. 在 RocketMQ 中,timerMaxDelaySec 是一个重要的参数,它用于设置消息延迟定时器的最大延迟时间。默认情况下,该参数的值为 24 小时。
    如果要更改 timerMaxDelaySec 参数的值,需要编辑 broker.conf 文件,并将 timerMaxDelaySec 参数的值设置为您想要的值。该文件位于 RocketMQ 的 conf 目录中。以下是一个示例配置:

    # 设置消息延迟定时器的最大延迟时间(单位:秒)timerMaxDelaySec=86400
  2. 是的,RocketMQ的消息最大延迟时间不能超过3天。在你的配置中,timerMaxDelaySec的值设置为2592000秒(约3天),这是正确的。如果你想要设置更长的延迟时间,可以考虑使用其他类型的消息,如定时任务或延时消息。

  3. 从你给出的错误信息来看,问题可能出在你的 timerMaxDelaySec 配置上。timerMaxDelaySec 是用于控制定时消息的最大延迟时间,单位为秒。默认值是 86400(一天),而你设置的值为 2592000(一个月),这超出了 RocketMQ 的最大延迟时间限制。

    RocketMQ 的 messageDelayLevel 参数可以设置不同的延迟级别,但最大的延迟时间不能超过 -1702967296ms(约等于 1342172800 秒,即 13 天)。

    如果你确实需要发送延迟超过 13 天的消息,你需要对 RocketMQ 的源代码进行修改,增加 timerMaxDelaySec 的最大值。但这可能会导致其他未知的问题,因此不建议这样做。

    如果你只是想在短时间内测试一下大延迟的消息,你可以尝试减少 timerMaxDelaySec 的值,或者使用 messageDelayLevel 参数来设置更小的延迟级别。