Apache Artemis在management-console.UI的使用者部分未显示任何clientId。

时间:2018-09-18 13:42:46

标签: activemq-artemis amq camel-jms

我正在使用Apache Artemis代理和Apache骆驼JMS组件

因为我正在使用Apache camel JMS组件,所以在这里,我正在听主题

    from(jms:topic:my_topic?durableSubscriptionName=dsn&clientId=testId)
            .log("......>")

我在这里设置了

clientId = testId
topic = my_topic
durableSubscriptionName = "dsn"

现在,当我使用management-console。UI时,它将在消费者ID中显示空的客户端ID

enter image description here

在上图中的队列 = testId.dsn 其中 testId 是clientId, dsn 是订阅名称。

在客户端标题下也没有显示clientId。

为什么在客户端标题下没有显示客户端名称。以及为什么 Queue 值显示clientId +订阅名称串联的原因

请在这里帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

ActiveMQ Artemis支持许多不同的协议,但是它们都是使用所谓的“核心” API在内部实现的。根据您使用的协议(例如AMQP,OpenWire等),此方法可能有所不同,但是如果您使用的是代理附带的JMS客户端(即“核心” JMS客户端),则客户端ID为存储在代理上“核心”会话的元数据中。但是,我看不到网络控制台实际在哪里解包并显示该元数据,因此看起来好像没有直接的方法可以识别客户端ID。但是,您可以通过查看队列名称的第一部分来推断客户端ID。

队列的名称(代表预订)是由代理通过将客户端ID和预订名称连接在一起而生成的。这是代理轻松区分持久订阅并确保重新连接的客户端能够重新获得其原始订阅的一种简单方法。