rockemq 发送延迟消息_RockeMQ通过代码监控消费者状态

==背景==

物联网场景,在设备端写了一个小的API服务程序,这个程序包括:

1、向平台上报设备数据

2、创建消费者客户端,用来监听平台的下行命令

==问题==

平台层需要知道设备的状态:在线  or  离线。我能想到的解决办法

1、设备上报心跳数据,平台通过心跳来判断设备是否在线。

2、rocketmq应该有可以监控消费者状态的命令,是否可以通过这个命令实现。

方案1肯定是没有问题的,不过缺点就是需要在平台上写状态管理的代码,麻烦不说,可能还有延迟。

于是想尝试方法2是否可行。

==践行过程==

首先,我观察了rocketmq-console(RocketMQ的Web界面,需要独立部署),发现可以通过Web界面查看消费者状态,结果如图:

33be652d71859f91008df3b648d2c116.png

通过浏览器的控制台日志,可以看到调用的是consumerConnection.query接口。

很好,我是否可以借鉴一下这个思路,去监听消费者状态呢。

6d29199b15434a64aac5b392cb78405d.png

按照这个思路走,去github上找了源码:https://github.com/apache/rocketmq-externals

通过查看他们的源码,才知道RocketMQ已经提供了供查看消费者链接信息的API。

==API示例==

需要引入新的pom文件rocketmq-tools、rocketmq-common,增加只有,所有的pom为

org.apache.rocketmq

rocketmq-store

4.5.0

org.apache.rocketmq

rocketmq-client

4.5.0

org.apache.rocketmq

rocketmq-acl

4.5.0

org.apache.rocketmq

rocketmq-tools

4.5.0

org.apache.rocketmq

rocketmq-common

4.5.0

Java代码示例

packageadmin;importorg.apache.rocketmq.client.exception.MQBrokerException;importorg.apache.rocketmq.client.exception.MQClientException;importorg.apache.rocketmq.common.protocol.body.ConsumerConnection;importorg.apache.rocketmq.remoting.exception.RemotingException;importorg.apache.rocketmq.tools.admin.DefaultMQAdminExt;public classAdminExtSample {public static voidmain(String[] args)throwsMQClientException, InterruptedException, MQBrokerException, RemotingException {

DefaultMQAdminExt defaultMQAdminExt= newDefaultMQAdminExt();

defaultMQAdminExt.setNamesrvAddr("101.132.242.90:9876;47.116.50.192:9876");

defaultMQAdminExt.start();

ConsumerConnection cc= defaultMQAdminExt.examineConsumerConnectionInfo("device_cg_notice_down");

System.out.println(cc.toString());

defaultMQAdminExt.shutdown();

}

}

这样就可以获取上面web页面中的所有信息了。

--END--

RockeMQ通过代码监控消费者状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值