我想得到ActiveMq的登录用户列表,和离线信息,有没有办法,我在ActiveMq的bat运行服务器中看到了用户离线消息,我怎么通过ActiveMq的DLL监听他们的这些离线信息。
我用IConnection中的ExceptionListener事件不好用,什么也接不到也不触发,不知道这兄弟是做什么的。
C# 怎么监听ActiveMq连接异常?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-27 20:36关注
该回答引用ChatGPT
您可以使用NMS API来监听ActiveMQ连接异常和获取登录用户列表等信息。
以下是一个示例代码片段,演示如何使用NMS API来监听连接异常:
using Apache.NMS; using Apache.NMS.ActiveMQ; IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616"); IConnection connection = factory.CreateConnection(); connection.ExceptionListener += new ExceptionListener(OnException); private void OnException(Exception ex) { Console.WriteLine("Exception occurred: " + ex.Message); }
在这个示例中,我们首先使用NMS API创建了一个连接工厂对象,并将其传递给ConnectionFacotry构造函数中,指定了ActiveMQ Broker的地址。然后我们使用连接工厂对象创建了一个连接对象,并通过连接对象的ExceptionListener事件注册了一个异常监听器。
如果连接出现任何异常,OnException方法将被调用,并将异常对象作为参数传递。您可以在这个方法中执行任何您需要的操作,例如记录异常信息或者尝试重新连接等。
要获取登录用户列表,您可以使用ActiveMQ的JMX管理API。您需要在ActiveMQ Broker中启用JMX,并使用JMX API连接到Broker并查询相关信息。以下是一个示例代码片段,演示如何使用JMX API获取登录用户列表:
using System; using Apache.NMS.ActiveMQ; using Apache.NMS.ActiveMQ.Transport; using Apache.NMS.ActiveMQ.Transport.Tcp; using Apache.NMS.Util; using Apache.NMS.ActiveMQ.Transport.Transport; Uri jmxUri = new Uri("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"); TransportConnection transport = new TcpTransportFactory().CreateTransport(jmxUri) as TransportConnection; transport.Start(); IMBeanServerConnection connection = new MBeanServerConnectionFactory(jmxUri).CreateMBeanServerConnection(); ObjectName[] consumers = connection.QueryNames(new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName=openwire"), null); foreach (ObjectName consumer in consumers) { ObjectName[] subscriptions = connection.QueryNames(new ObjectName(consumer.CanonicalName + ",destinationType=Queue,destinationName=*"), null); foreach (ObjectName subscription in subscriptions) { string user = (string)connection.GetAttribute(subscription, "UserName"); Console.WriteLine("User: " + user); } }
在这个示例中,我们首先构造了一个JMX URI对象,指定了JMX服务的地址和端口号。然后我们使用TcpTransportFactory类创建了一个TCP传输对象,将JMX URI作为参数传递给构造函数中,并启动了传输对象。
接着,我们使用MBeanServerConnectionFactory类创建了一个MBeanServerConnection对象,并将JMX URI作为参数传递给构造函数中,从而连接到ActiveMQ Broker的JMX管理服务。
最后,我们使用MBeanServerConnection对象的QueryNames方法,查询了当前连接到Broker的所有消费者对象,并循环遍历了每个消费者对象,并查询了与该消费者相关的所有订阅对象。然后,我们使用MBeanServerConnection对象的GetAttribute方法,获取了每个订阅对象的UserName属性值,并将其输出到控制台。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题