最近对系统进行压测,发现发送消息到消息队列的时候出现以下错误:spring
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: 1spa
经查询发现RocketMq在4.1版本之后为producer增长了2个配置, 默认配置这两个参数分别是1和false,将他们配置成 64 和true,就能解决问题线程
#发送消息的最大线程数
sendMessageThreadPoolNums: 64 #large thread numbers
#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true
该配置能够在spring配置中设置,也能够在RocketMq集群机器上配置code
若是仍是会出现此问题,就须要调整RocketMq集群机器配置:blog
waitTimeMillsInSendQueue = 300 #或者更大
而后重启集群队列