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. Кроме того, он не отслеживает имена пунктов назначения, созданные в соответствующем сеансе.