我正在寻找一个ActiveMQ经纪人admin命令,告诉它暂停队列-即:
我找不到这样的命令。最常见的答案是应该在客户端对其进行管理-即找到每个消费者并停止它。其他答案是解决方法,例如操纵网络路由或防火墙,以便客户端和代理不再通信。
对其他消息队列的粗略调查表明,ActiveMQ在这方面并不罕见。
在我看来,可能无法实现此功能有两个原因:
是什么,为什么?
新发布的ActiveMQ 5.12.0支持暂停队列:
当队列“暂停”时:
没有消息发送给准消费者
消息仍要排队入队
能够浏览队列的能力
队列的所有JMX计数器都可用并且正确。
...
实现的暂停/恢复/ isPaused队列视图mbean操作和属性
暂停后,将不会分派给常规队列使用者,也不会像往常一样发送和浏览工作。所有机上消息将继续进行,直到正常应答为止。
参见https://issues.apache.org/jira/browse/AMQ-5229
如果您启用了Jolokia(我认为现在默认情况下启用了Jolokia),则可以使用类似以下curl请求的方式来暂停队列:
curl --user admin:admin http://127.0.0.1:8161/api/jolokia/exec/org.apache.activemq:brokerName=localhost,destinationName=myQueue,destinationType=Queue,type=Broker/pause
Run Code Online (Sandbox Code Playgroud)
(使用默认的用户名,密码和代理名称以及名为myQueue的队列)
为了恢复队列,将“ pause”替换为“ resume”。
归档时间: |
|
查看次数: |
2049 次 |
最近记录: |