三招!解决消息队列的数据积压问题
2020年Java面试题库连载中 更多内容,点击上面蓝字查看 消息队列的文章也是发过蛮多的,比如: 今天,就讲讲解决消息队列的数据积压的三个方案。 1 概述 最近生产环境的消息通知队列发生了大量的数据积压问题,从而影响到整个平台商户的交易无法正常进行,最后只能通过临时关闭交易量较大的商户来缓解消息队列积压的问题,经线上数据分析,我们的消息队列在面对交易突发洪峰的情况下无法快速的消费并处理队列中的数据,考虑到后续还会出现各种交易量突发状况,以下为针对消息队列(ActiveMQ)的优化过程。 2 消息队列通信图 3 问题定位与分析 3.1 消息通知数据为什么会被积压? 分析:平台中每个交易的发生可能会产生一到多条的消息通知数据,这些通知数据会通过消息队列(ActiveMQ)来中转消费并处理,那么在交易量突发洪峰的情况下会产生大量的消息通知数据,如果消息队列(ActiveMQ)的消费能力被阻塞的话会严重影响到数据的吞吐量,从而积压大量数据无法被快速处理! 3.2 配置了多个ActiveMQ的消费者为什么数据积压还是无法缓解? 分析:经过分析消息队列的数据消费处理模块的代码,消息的消费处理是通过监听器SessionAwareMessageListener异步回调onMessage方法而接收消息的