Как получить созданные темы (и очереди) сеанса с помощью ActiveMQ 5.x - PullRequest
0 голосов
/ 18 июня 2020

Я создал разные темы, используя session.createTopic(topicname). Как мне получить список всех доступных тем в сеансе? Я пробовал использовать session.getStats(), но не могу перебрать его, чтобы получить нужную мне информацию.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Используя следующую команду, вы получите все темы от брокера:

 Set<ActiveMQTopic> topics = activeMqConnection.getDestinationSource().getTopics();

Но я не думаю, что вы хотите. Другой вариант:

session.getSessionStats()
.getProducers()
.stream()
.map(JMSProducerStatsImpl::getDestination)
.collect(Collectors.toList());
1 голос
/ 18 июня 2020

JMS API не предоставляет никакого метода, который предоставляет список всех адресатов, созданных с помощью javax.jms.Session.

Я рекомендую вам хранить созданные вами javax.jms.Destination экземпляры в локальной структуре данных (например, java.util.ArrayList), чтобы отслеживать их.

Имейте в виду, что оба javax.jms.Session.createTopic(String) и javax.jms.Session.createQueue(String) просто создают на стороне клиента экземпляр javax.jms.Topic или javax.jms.Queue соответственно. Они не фактически создают топи c или очередь на брокере. Это отмечено в JavaDo c, например:

Обратите внимание, что этот метод просто создает объект, который инкапсулирует имя топи c. Он не создает физическую вершину c в провайдере JMS. JMS не предоставляет метод для создания физического топа c, так как он будет указан c для данного поставщика JMS. Создание физического топа c зависит от поставщика c и обычно является административной задачей, выполняемой администратором, хотя некоторые поставщики могут создавать их автоматически при необходимости. Единственным исключением из этого правила является создание временной вершины c, которая выполняется с помощью метода createTemporaryTopi c.

Указанный вами метод getStats() не является частью JMS API. . Это уникально для реализации клиента ActiveMQ 5.x JMS. Кроме того, он не отслеживает имена пунктов назначения, созданные в соответствующем сеансе.

...