MQ产品使用合集之设置rocketmq的timerMaxDelaySec时间出现报错如何解决

简介: 消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。

问题一:关于设置rocketmq的timerMaxDelaySec时间问题


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 天的延时消息。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/570756


问题二:RocketMQ运行官网c#工程的时候报了异常,怎么解决呢?


RocketMQ运行官网c#工程的时候报了异常,怎么解决呢?


参考回答:

为了解决RocketMQ运行官网C#工程时的异常,需要先了解具体的错误信息。以下是一些建议:

  1. 检查错误日志:查看控制台输出的错误信息,找出具体的问题原因。
  2. 确保环境配置正确:确保已经安装了所有必要的依赖库和组件,例如RocketMQ C#客户端、.NET Framework等。
  3. 检查代码逻辑:检查代码中是否存在逻辑错误或者遗漏的部分,例如生产者和消费者的配置、消息发送和接收的代码等。
  4. 查阅官方文档和示例:如果仍然无法解决问题,可以查阅RocketMQ官方文档和示例代码,看看是否有类似的问题和解决方案。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/568997


问题三:RocketMQ4.9.x版本中,消费组没连上收不到消息,有遇到过这样问题的吗?


RocketMQ4.9.x版本中,defaultMQPushConsumer.shutdown()后再start(),消费组没连上收不到消息,有遇到过这样问题的吗?


参考回答:

是的,我曾经遇到过类似的问题。这可能是由于 RocketMQ 4.9.x 版本中的 bug 导致的。

在 RocketMQ 4.9.x 版本中,默认情况下,如果调用 shutdown() 方法关闭了消费组,则无法再次调用 start() 方法重新连接并接收消息。这是因为 shutdown() 方法会断开与 RocketMQ 服务器的所有连接,并释放所有的资源,包括队列和主题等。因此,在关闭消费组之后,即使再次调用 start() 方法也无法恢复到以前的状态。

为了解决这个问题,建议在每次关闭消费组之前,先使用 suspend() 方法暂停消费,然后再使用 resume() 方法恢复消费。这样可以在不完全关闭消费组的情况下停止接收消息,并在需要的时候重新开始消费。

此外,还有一种解决方案是在关闭消费组之后,重新创建一个新的消费组对象来代替原来的消费组。但是这种方法需要重新订阅所有的话题,并且在生产环境中可能不太适合,因为会增加额外的操作复杂性和系统负载。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567676


问题四:RocketMQ一直拉不到 有遇到过吗?


RocketMQ一直拉不到 有遇到过吗?

sh build-image.sh 5.0.0 alpine

Version = 5.0.0

Sending build context to Docker daemon 35.84kB

Step 1/23 : FROM eclipse-temurin:8-jdk-alpine AS builder

8-jdk-alpine: Pulling from library/eclipse-temurin

8-jdk-alpine: Pulling from library/eclipse-temurin

no matching manifest for linux/arm64/v8 in the manifest list entries


参考回答:

您可能遇到的问题是,您的架构不支持 Docker 镜像。要解决此问题,请尝试更换 ARM 架构镜像文件,并确保它们具有正确的目标架构:

docker pull registry.cn-shanghai.aliyuncs.com/docker.io/library/eclipse-temurin:8-jdk-alpine@sha256:556e27dfc4588b12f0e71cc69b35477f4d0df35f319db228bfa9b431c268c64ab0e3c8178fd11a195e1df396c3f7e748
docker build . -t rocketmq-all-in-one-arm64:v5.0.0


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567675


问题五:RocketMQ相关问题求解答?


RocketMQ相关问题求解答

no matching manifest for linux/arm64/v8 in the manifest list entries

build-image.sh一直没有匹配的怎么搞


参考回答:

根据您提供的信息,“no matching manifest for linux/arm64/v8 in the manifest list entries”错误可能是因为您的系统是基于 ARM 架构的,并且使用的 Docker 镜像是为 x86 架构设计的。

要解决这个问题,您可以尝试以下方法之一:

  1. 使用专门为 ARM 架构设计的 Docker 镜像。例如,如果您想要使用 MySQL,请尝试从 Docker Hub 上拉取 arm64 版本的镜像,而不是默认的 x86 版本。在 Docker Hub 中搜索“mysql arm64”,就可以找到相应的镜像了。
  2. 如果您不想更换镜像,还可以尝试使用 qemu-user-static 这个工具来模拟 x86 环境。首先安装 qemu-user-static,然后使用下面的命令启动 Docker 容器:
docker run --rm --privileged multiarch/qemu-user-static:register --reset

这样就可以让 Docker 支持不同架构的镜像了。

最后,在执行 build-image.sh 脚本之前,请确保已经安装了 Docker 和所需的开发工具链,并且 Docker 已经正确配置为支持 ARM 架构的镜像。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567674

相关实践学习
5分钟轻松打造应对流量洪峰的稳定商城交易系统
本实验通过SAE极速部署一个微服务电商商城,同时结合RocketMQ异步解耦、削峰填谷的能力,带大家体验面对流量洪峰仍旧稳定可靠的商城交易系统!
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 架构师 Java
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
|
5月前
|
消息中间件 负载均衡 物联网
乐刻运动:基于 RocketMQ + MQTT 实现健身产业数字化升级
乐刻运动通过采用阿里云的云消息队列 RocketMQ 版和云消息队列 MQTT 版,不仅提升了系统的实时数据处理能力,还增强了系统的可扩展性、可靠性和性能,为业务的持续发展和流畅的用户体验,提供了坚实的技术支持,进一步推动了数字经济与健身产业的深度融合。
196 47
|
3月前
|
消息中间件 存储 Cloud Native
基于 RocketMQ 的云原生 MQTT 消息引擎设计
基于 RocketMQ 的云原生 MQTT 消息引擎设计
|
10月前
|
消息中间件 Java Kafka
消息传递新纪元:探索RabbitMQ、RocketMQ和Kafka的魅力所在
【8月更文挑战第29天】这段内容介绍了在分布式系统中起到异步通信与解耦作用的消息队列,并详细探讨了三种流行的消息队列产品:RabbitMQ、RocketMQ 和 Kafka。其中,RabbitMQ 是一个基于 AMQP 协议的开源消息队列系统,支持多种消息模型;RocketMQ 则是由阿里巴巴开源的具备高性能、高可用性和高可靠性的分布式消息队列,支持事务消息等多种特性;而 Kafka 作为一个由 LinkedIn 开源的分布式流处理平台,以高吞吐量和良好的可扩展性著称。此外,还提供了使用这三种消息队列发送和接收消息的代码示例。总之,这三种消息队列各有优势,适用于不同的业务场景。
141 3
|
5月前
|
消息中间件 运维 Java
招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
45岁资深架构师尼恩针对一线互联网企业面试题,特别是招商银行的高阶Java后端面试题,进行了系统化梳理。本文重点讲解如何根据应用场景选择合适的消息中间件(如RabbitMQ、RocketMQ和Kafka),并对比三者的性能、功能、可靠性和运维复杂度,帮助求职者在面试中充分展示技术实力,实现“offer直提”。此外,尼恩还提供了《尼恩Java面试宝典PDF》等资源,助力求职者提升架构、设计、开发水平,应对高并发、分布式系统的挑战。更多内容及技术圣经系列PDF,请关注【技术自由圈】获取。
|
9月前
|
消息中间件 存储 Cloud Native
基于 RocketMQ 的云原生 MQTT 消息引擎设计
本文将介绍阿里云如何将 Serverless 架构应用于消息队列,有效降低运营成本,同时利用云原生环境的特性,为 IoT 设备提供快速响应和灵活伸缩的通讯能力。
358 64
|
7月前
|
消息中间件 大数据 Kafka
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
|
7月前
|
消息中间件 存储 监控
ActiveMQ、RocketMQ、RabbitMQ、Kafka 的区别
【10月更文挑战第24天】ActiveMQ、RocketMQ、RabbitMQ 和 Kafka 都有各自的特点和优势,在不同的应用场景中发挥着重要作用。在选择消息队列时,需要根据具体的需求、性能要求、扩展性要求等因素进行综合考虑,选择最适合的消息队列技术。同时,随着技术的不断发展和演进,这些消息队列也在不断地更新和完善,以适应不断变化的应用需求。
312 1
|
8月前
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
127 1
|
10月前
|
消息中间件 存储 监控
RabbitMQ、Kafka对比(超详细),Kafka、RabbitMQ、RocketMQ的区别
RabbitMQ、Kafka对比(超详细),Kafka、RabbitMQ、RocketMQ的区别,设计目标、适用场景、吞吐量、消息存储和持久化、可靠性、集群负载均衡
RabbitMQ、Kafka对比(超详细),Kafka、RabbitMQ、RocketMQ的区别

相关产品

  • 云消息队列 MQ