java onmessage监听消息队列_三招!解决消息队列的数据积压问题

本文讲述了如何解决Java ActiveMQ消息队列的数据积压问题,通过取消监听器的`synchronized`同步锁,优化`queuePrefetch`参数,以及采用双队列处理策略,实现了消息队列性能的显著提升,最高可达30多倍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2020年Java面试题库连载中

更多内容,点击上面蓝字查看

消息队列的文章也是发过蛮多的,比如:

今天,就讲讲解决消息队列的数据积压的三个方案。

1 概述

最近生产环境的消息通知队列发生了大量的数据积压问题,从而影响到整个平台商户的交易无法正常进行,最后只能通过临时关闭交易量较大的商户来缓解消息队列积压的问题,经线上数据分析,我们的消息队列在面对交易突发洪峰的情况下无法快速的消费并处理队列中的数据,考虑到后续还会出现各种交易量突发状况,以下为针对消息队列(ActiveMQ)的优化过程。

2 消息队列通信图

0afeb392b8b77a5a77c2061a7817d2aa.png

3 问题定位与分析

3.1 消息通知数据为什么会被积压?分析:平台中每个交易的发生可能会产生一到多条的消息通知数据,这些通知数据会通过消息队列(ActiveMQ)来中转消费并处理,那么在交易量突发洪峰的情况下会产生大量的消息通知数据,如果消息队列(ActiveMQ)的消费能力被阻塞的话会严重影响到数据的吞吐量,从而积压大量数据无法被快速处理!

3.2 配置了多个ActiveMQ的消费者为什么数据积压还是无法缓解?分析:经过分析消息队列的数据消费处理模块的代码,消息的消费处理是通过监听器SessionAwareMessageListener异步回调onMessage方法而接收消息的,但是在回调的方法onMessage上加了synchron

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值