API управления Artemis JMS

В настоящее время я переношу приложение Spring Boot 2.x с ActiveMQ 5.x на Artemis, но у меня проблема с Artemis activemq.notifications и activemq.management.

В ActiveMQ 5 я использовал тему ActiveMQ.Advisory.Connection, чтобы узнать, подключены ли в настоящее время клиенты с определенным clientId. При подключении к этой теме я сначала получил всех подключенных в данный момент клиентов, а затем получил информацию с помощью ConnectionInfo и RemovedInfo, если клиенты отключились или подключились к сети.

К сожалению, Артемис не поддерживает такое поведение. Прослушивание activemq.notifications предоставляет информацию только о сеансах, созданных или закрытых во время прослушивания темы.

Итак, теперь мне нужно синхронизировать подключенных клиентов при запуске моего приложения.

Я попытался получить доступ к ActiveMQServerControl.listConnectionIDs() с помощью API управления JMS, но метод org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl.getAttribute() разрешает доступ только к методам, начинающимся с get или is.

Есть ли другой способ получить необходимую информацию (без опроса)?


person jump    schedule 01.09.2020    source источник


Ответы (1)


Вы можете выполнить операцию вместо получения атрибута, используя что-то вроде

org.apache.activemq.artemis.api.jms.management.JMSManagementHelper.putOperationInvocation(m, ResourceNames.BROKER, "listConnectionIDs");

Обратите внимание, это может не сработать, я просто хотел показать вам пример.

person ehsavoie    schedule 01.09.2020