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

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8天前
|
消息中间件 数据库
RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,
通过上述步骤,可以逐步排查和解决RabbitMQ启动时出现的 `Error during startup: {error, {schema_integrity_check_failed, ...}}`错误。这些步骤包括检查磁盘空间、修复文件权限、清理Mnesia数据库、检查日志文件以及升级或重装RabbitMQ。希望这些方法能帮助您解决问题,使RabbitMQ顺利启动并正常运行。
46 1
|
4月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
1月前
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
21 1
|
3月前
|
消息中间件 人工智能 监控
|
4月前
|
消息中间件 Java 物联网
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
|
4月前
|
消息中间件 JavaScript Linux
消息队列 MQ操作报错合集之客户端在启动时遇到了连接错误,是什么原因
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 小程序 RocketMQ
消息队列 MQ使用问题之如何在小程序中引用paho-mqtt
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
12天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
17天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
55 7
|
15天前
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!

相关产品

  • 云消息队列 MQ
  • 下一篇
    无影云桌面