0

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

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

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

我在这里设置

clientId = testId
topic = my_topic
durableSubscriptionName = "dsn"

现在,当我使用管理控制台.UI 时,它在消费者 ID 中显示为空的客户端 ID

在此处输入图像描述

在上图中Queue = testId.dsn 其中testId是 clientId 而dsn是订阅名称。

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

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

请在这里帮忙,谢谢!

4

1 回答 1

1

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

队列的名称(代表订阅)由代理通过连接客户端 ID 和订阅名称生成。这是代理区分持久订阅并确保重新连接的客户端能够再次访问其原始订阅的一种简单方法。

于 2018-09-18T16:22:09.787 回答