В Apache Artemis отсутствует идентификатор clientId в потребительском разделе консоли управления. - PullRequest
0 голосов
/ 18 сентября 2018

Я использую брокер Apache Artemis и JMS-компонент Apache Camel

, поскольку я использую JMS-компонент Apache Camel, поэтому здесь я слушаю тему

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

Здесь я установил

clientId = testId
topic = my_topic
durableSubscriptionName = "dsn"

Теперь, когда я использую консоль управления .UI, он показывает пустой идентификатор клиента в идентификаторе потребителя

enter image description here

На изображении выше Очередь = testId.dsn, где testId - это clientId, а dsn - это имя подписки.

также не указывается clientId под заголовком клиента.

почему имя клиента не отображается под заголовком клиента.а также почему значение Queue показывает конкатенацию clientId + имя подписки

, пожалуйста, помогите здесь, спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

ActiveMQ Artemis поддерживает множество различных протоколов, но все они реализованы внутри, используя так называемый «базовый» API.В зависимости от протокола, который вы используете (например, AMQP, OpenWire и т. Д.), Это может отличаться, но если вы используете клиент JMS, который поставляется вместе с брокером (то есть «основной» клиент JMS), тогда идентификатор клиентахранятся в метаданных «основного» сеанса на брокере.Тем не менее, я не вижу, где веб-консоль фактически распаковывает и отображает эти метаданные, так что, похоже, нет прямого способа идентифицировать идентификатор клиента.Однако вы можете определить идентификатор клиента, посмотрев на первую часть имени очереди.

Имя очереди (которая представляет подписку) создается посредником путем объединения идентификатора клиента и имени подписки.Это простой способ для брокера отличать надежные подписки друг от друга и обеспечивать повторное подключение клиентов к исходной подписке.

...