我目前正在将Spring Boot2.x应用程序从Artemis 5.x迁移到ActiveMQ,但我对Artemis activemq.notifications和activemq.management有一个问题。
在ActiveMQ 5中,我使用了ActiveMQ.Advisory.Connection主题来查看具有特定clientId的客户端当前是否已连接。连接到这个主题,我首先收到所有当前连接的客户端,然后收到ConnectionInfo和RemovedInfo的通知,如果客户端脱机或上线。
不幸的是,Artemis不支持这种行为。侦听activemq.notifications仅提供有关在侦听主题时创建的会话或关闭的会话的信息。
因此,现在我需要在应用程序启动时同步连接的客户端。
我尝试使用JMS management API访问ActiveMQServerControl.listConnectionIDs(),但是org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl.getAttribute()方法只允许访问以get或is开头的方法。
有没有其他方法可以获得所需的信息(不需要轮询)?
发布于 2020-09-01 17:38:02
您可以使用如下命令执行操作,而不是获取属性
org.apache.activemq.artemis.api.jms.management.JMSManagementHelper.putOperationInvocation(m, ResourceNames.BROKER, "listConnectionIDs");请注意,这可能不起作用,我只是想给你展示一个例子。
https://stackoverflow.com/questions/63682901
复制相似问题