思路:(易->难)
1.新增服务器,增加消费端数量。
2.服务器端开启多线程消费消息(默认单线程监听队列),需要注意多线程可能带来的并发问题。
3.优化消费端处理逻辑,提升消息消费速率即系统优化。
背景:本系统为小型支付系统,商户618活动期间,用户购买商品付款后迟迟收不到支付结果异步通知。
问题排查:排查日志,发现收单渠道方推送支付结果异步通知正常。回调服务(本系统通知商户支付结果服务)消费队列消息滞后,导致商户不能及时收到支付结果。
消费端监听消息:此模式默认单线程监听队列
@RabbitHandler
@RabbitListener(queues = MQConstant.ZFB_HANDLER_QUEUE)
public void zfbReceiveMsg(Map<String, Object> map, Message message, Channel channel) throws IOException {
//dosomething
}
消费端监听消息:此模式开启多线程监听队列
concurrency = "5-8":表示开启5个线程监听队列,最大为8个线程(依据服务器负载情况)文章来源:https://www.toymoban.com/news/detail-539805.html
当然也可以在RabbitListenerContainerFactory的配置中指定线程数。文章来源地址https://www.toymoban.com/news/detail-539805.html
@RabbitHandler
@RabbitListener(queues = MQConstant.ZFB_HANDLER_QUEUE, concurrency = "5-8")
public void zfbReceiveMsg(Map<String, Object> map, Message message, Channel channel) throws IOException {
//dosomething
}
到了这里,关于RabbitMQ消费端消费能力不足,消息消费慢问题解决思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!