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天以上吗?还是我的配置内容缺少了,有没有大佬帮我解答下
根据你的错误消息,问题可能在于你设置的 timerMaxDelaySec
参数超过了允许的最大值。RocketMQ 默认允许的最大延迟时间为 3 天(2592000 毫秒)。如果你尝试设置一个大于这个值的延时时间,就会出现上述错误。
在你的配置中,你已经将 timerMaxDelaySec
设置为 2592000,这是允许的最大值。然而,你提供的错误消息似乎表明客户端正在尝试发送一个比这个最大值还要大的延时消息,因此导致了错误。
为了修复这个问题,请确保你的客户端代码没有试图发送超过 3 天延时的消息。你可以检查你的客户端代码,并确认它是否正确地使用了你在服务器端设置的 messageDelayLevel
参数来限制消息的最大延迟时间。
例如,如果 messageDelayLevel
设置为 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 4h 5h
,那么客户端应该只能发送在这个范围内延迟的消息,而不是超过 3 天的延时消息。
在 RocketMQ 中,timerMaxDelaySec 是一个重要的参数,它用于设置消息延迟定时器的最大延迟时间。默认情况下,该参数的值为 24 小时。
如果要更改 timerMaxDelaySec 参数的值,需要编辑 broker.conf 文件,并将 timerMaxDelaySec 参数的值设置为您想要的值。该文件位于 RocketMQ 的 conf 目录中。以下是一个示例配置:
# 设置消息延迟定时器的最大延迟时间(单位:秒)
timerMaxDelaySec=86400
是的,RocketMQ的消息最大延迟时间不能超过3天。在你的配置中,timerMaxDelaySec
的值设置为2592000秒(约3天),这是正确的。如果你想要设置更长的延迟时间,可以考虑使用其他类型的消息,如定时任务或延时消息。
从你给出的错误信息来看,问题可能出在你的 timerMaxDelaySec
配置上。timerMaxDelaySec
是用于控制定时消息的最大延迟时间,单位为秒。默认值是 86400
(一天),而你设置的值为 2592000
(一个月),这超出了 RocketMQ 的最大延迟时间限制。
RocketMQ 的 messageDelayLevel
参数可以设置不同的延迟级别,但最大的延迟时间不能超过 -1702967296ms
(约等于 1342172800
秒,即 13 天)。
如果你确实需要发送延迟超过 13 天的消息,你需要对 RocketMQ 的源代码进行修改,增加 timerMaxDelaySec
的最大值。但这可能会导致其他未知的问题,因此不建议这样做。
如果你只是想在短时间内测试一下大延迟的消息,你可以尝试减少 timerMaxDelaySec
的值,或者使用 messageDelayLevel
参数来设置更小的延迟级别。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/