ActiveMQ暂停接收消息与恢复接收消息

本文介绍了在ActiveMQ中如何暂停和恢复消息消费者接收消息。通过研究JMS规范,发现可以使用connection.stop()和connection.start()方法来实现这一功能。在连接停止期间,消息生产者仍可发送消息,而消费者在恢复连接后能够接收到停止期间产生的消息,测试验证了这种方法的有效性。

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

目录

 

●问题起因

●解决方案

●测试结果


问题起因

使用ActiveMQ的过程中,有这么一个很常见的需求:如果我的消息消费者压力过大,接收消息来不及处理,我想暂停接收消息,先处理完已接收到的消息后,再恢复继续接收新的消息

比较诡异的是,这样一个看似简单的功能,百度上居然没有一个适用的方案,大家不信的话可以搜索试试:

第一篇文章看似OK,但是点进去你会发现他的实现方式依旧繁琐(一会儿把connection对象放进map,一会儿去进行close操作)更别说性能了。

 

解决方案

如果用过Kafka的同学肯定知道,KafkaConsumer对象提供了两个方法,pause()和resume(),用来暂停和恢复接收。思路上也很直观,就是针对消费者采用“暂停”和“恢复”的动作。然而,如果大家去阅读ActiveMQ或者JMS的API文档,你会发现消费者MessageConsumer并没有提供这样的方法。难道这样的需求ActiveMQ会不支持?

在搜索百度无果的情况下,笔者去ActiveMQ的官网寻找结论,也未果,遂直接阅读了JMS规范v1.1的官方手册(大家有兴趣可以前往笔者的空间自行下载),终于在里面发现这么一段描述:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值