RocketMQ应用过程中所遇问题及解决方案
一:发送异步消息时报错(mq快速失败机制导致)
1.报错日志:
sendResult=CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 206ms, size of queue: 84
2.简单分析:
当Broker端由于性能问题以及服务端积压的请求太多从而得不到及时处理,会极大的造成客户端消息发送的时间延长。
RocketMQ为了解决这种由于性能锁带来的频发问题,引入Broker端快速失败机制,即开启一个定时调度线程,每隔10毫秒去检查队列中的第一个排队节点,如果该节点的排队时间已经超过了200ms。就会取消该队列中所有已超过 200ms 的请求,立即向客户端返回失败。
3.解决方案
1.增加waitTimeMillsInSendQueue的值,该值默认为 200ms,例如将其设置为1000s等等,适当提高该值能有效的缓解。
修改broker配置文件:
vim broker-a.properties
重启mq的broker即可