RocketMq发送消息出现com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 201ms, size of queue: 1

2023-05-03,,

最近对系统进行压测,发现发送消息到消息队列的时候出现如下错误:

<!--
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px 'Helvetica Neue'}
-->

com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 2  DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 201ms, size of queue: 1

经查询发现RocketMq在4.1版本以后为producer增加了2个配置, 默认配置这两个参数分别是1和false,将他们配置成 64 和true,就能解决问题

#发送消息的最大线程数
sendMessageThreadPoolNums: 64 #large thread numbers
#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true

该配置可以在spring配置中设置,也可以在RocketMq集群机器上配置

如果还是会出现此问题,就需要调整RocketMq集群机器配置:

waitTimeMillsInSendQueue  =   #或者更大

然后重启集群

RocketMq发送消息出现com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 201ms, size of queue: 1的相关教程结束。

《RocketMq发送消息出现com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 201ms, size of queue: 1.doc》

下载本文的Word格式文档,以方便收藏与打印。