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

如何获取ActiveMQ Artemis消费者列表及消费者连接足迹?

实现ActiveMQ Artemis消费者连接/断开足迹记录的方案

针对你的需求,以下是几种可行的实现方式,替代你原本寻找REST API的思路:

1. 基于Core管理API定时轮询

ActiveMQ Artemis提供了Core Management API,支持通过JMX或Core客户端获取当前消费者列表,不需要依赖REST接口:

  • 用JMX连接Broker,调用ActiveMQServerControl的listConsumers()或listQueueConsumers(String queueName)方法,拿到消费者的ID、客户端ID、连接地址、关联队列/主题等信息。
  • 或者用Core客户端连接到Broker的管理地址(默认activemq.management),发送ManagementHelper构造的请求命令,获取消费者数据。
  • 你可以编写定时任务(比如每分钟)轮询该API,将获取到的消费者列表与数据库中存储的历史记录对比,新增的即为连接事件,消失的即为断开事件,更新数据库记录。

2. 自定义Broker插件监听实时事件

通过实现Artemis的BrokerPlugin接口,可直接监听消费者的创建与销毁事件,实时记录足迹:

  • 实现BrokerPlugin的afterCreateConsumer(消费者连接时触发)和beforeDestroyConsumer(消费者断开时触发)方法,在方法内将消费者的相关信息(ID、客户端标识、时间戳等)写入数据库。
  • 在broker.xml中配置该自定义插件,比如:
    <broker-plugins>
      <plugin class-name="com.yourpackage.YourConsumerTrackingPlugin"/>
    </broker-plugins>
    
  • 这种方式无需轮询,事件触发时直接处理,实时性更高。

3. 订阅内置通知主题获取事件

Artemis内置了通知系统,会向特定主题发送Broker内部事件,包括消费者的连接/断开:

  • 订阅主题activemq.notifications,该主题会发送CONSUMER_CREATED和CONSUMER_DELETED类型的消息,消息体包含消费者ID、关联资源(队列/主题)、客户端ID等详细信息。
  • 创建一个专用消费者订阅该主题,收到消息后解析内容,将事件记录写入数据库。
  • 这种方式属于被动接收事件,无需主动轮询,实现简单且实时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:52:12