Spring JMS: как работать с «ActiveMQ Advisory Message» - PullRequest
0 голосов
/ 29 мая 2018

Для 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 может помочь в некотором роде.

...