Для Spring Framework
приложения, работающего с ActiveMQ
и с / без WebSocket
Требуется предварительная отправка любого сообщения на Topic
, необходимо проверить Number Of Consumers
,если он возвращает 1, сообщение может быть безопасно отправлено.Если он возвращает 0, сообщение не может быть отправлено.
Клиенты могут приходить из websocket и полагать, что длительная подписка отсутствует.Таким образом, если сообщение отправлено, а клиентов нет, оно приходит на Topic
и практически теряется (никогда не используется), а Messages Enqueued
увеличивается + 1
Я уже провел исследование и у меня естьпрочитайте следующее:
Практически все основано на Advisory Message
.Я уже прочитал:
Я понимаю, что если существует Topic
с именем abc.xyz
, то ActiveMQ
создает ActiveMQ.Advisory.Consumer.Topic.abc.xyz
, пока я не буду в порядке с этим шаблоном.Я могу подтвердить этот подход с помощью ActiveMQ Web Console
Что меня смущает, так это то, что практически все примеры, доступные по предыдущим ссылкам, работают вокруг создания Session
и используют в основном метод onMessage
.Для последнего я знаю, как работает слушатель.
Вопрос 01 : Таким образом, кто, как ожидается, назовет это ActiveMQ.Advisory.Consumer.Topic.abc.xyz
?Это, чтобы вызвать тот метод onMessage
?Это мое замешательство.
Мне нужна работа с Spring Framework
API (приложение уже работает и работает с CachingConnectionFactory
, таким образом, можно получить Connection
и другие @Beans
оинфраструктура около ActiveMQ
) и получает доступ к этому ActiveMQ.Advisory.Consumer.Topic.abc.xyz
месту назначения и получает значение Number Of Consumers
.
Примечание : даже если существует ActiveMQTopic
, объявленное с @Bean
и возможно получить это Destination
для некоторых @Component
, к сожалению, API не предлагает такой метод getConsumers()
.
Вопрос 02: Как этого достичь?
Я предполагаю, что API JMS
для 2.0.x может помочь в некотором роде.