You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过broker.xml暂停/恢复ActiveMQ Artemis 2.29.0队列消息投递

ActiveMQ Artemis 2.29.0 队列消息投递暂停/恢复实现方案

首先明确:broker.xml作为静态配置文件,无法直接实现运行时动态的投递暂停与恢复——你看到的“启用/禁用”是地址/队列的全局状态开关(禁用后队列无法接收生产请求,也无法处理消费请求),和仅暂停消息投递(生产者可正常发消息,消费者保持连接但暂不接收消息)不是同一概念。

以下是几种可行的实现方式:

1. 运行时动态操作(推荐)

方法一:Web控制台操作

登录Artemis内置Web控制台(默认端口8161),找到目标队列后,点击Pause Consumption按钮暂停投递,点击Resume Consumption恢复投递。

方法二:CLI命令操作

使用Artemis提供的命令行工具执行操作:

  • 暂停队列投递:
    ./artemis queue pause --name <队列名称> --url tcp://<broker地址>:<端口>
    
  • 恢复队列投递:
    ./artemis queue resume --name <队列名称> --url tcp://<broker地址>:<端口>
    

示例:

./artemis queue pause --name myQueue --url tcp://localhost:61616

方法三:JMX API操作

通过JMX客户端连接到Artemis Broker,找到对应队列的MBean(路径:org.apache.activemq.artemis:broker=<Broker名称>,component=queues,address=<地址名称>,queue=<队列名称>),调用pause()方法暂停投递,调用resume()方法恢复投递。

2. 启动时默认暂停投递(静态配置)

如果需要队列启动后默认处于投递暂停状态,可以在broker.xml的队列配置中添加pause-on-startup="true"属性,示例:

<address name="myTargetAddress">
  <multicast>
    <queue name="myTargetQueue" pause-on-startup="true"/>
  </multicast>
</address>

这种配置仅控制启动状态,后续仍需通过上述动态操作恢复投递。

关键概念区分

  • 禁用队列:通过enabled="false"配置,队列完全不可用,生产者无法发送消息,消费者无法连接消费。
  • 暂停投递:仅停止向消费者投递消息,生产者可正常发送消息到队列,消费者保持连接但暂不接收消息,恢复后会继续投递队列中积压的消息。

内容的提问来源于stack exchange,提问作者Subhidh Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:41:10