У меня есть модуль, который работает автономно в JVM
(без контейнеров) и связывается с другими модулями через JMS
. Мой модуль является одновременно производителем в одной очереди и потребителем в другой очереди. Мне нужно сгруппировать этот модуль как по причинам HA, так и по рабочей нагрузке, и я, вероятно, собираюсь пойти с Terracotta + Hibernate для кластеризации моих объектов. В настоящее время, когда мое приложение запускает его, запускается поток (через Executors.newSingleThreadExecutor()
), который служит в качестве потребителя (я могу приложить пример фактического кода, если это необходимо и необходимо).Кластеризация модулей и JMS
То, что я понял из чтения вопросов здесь является то, что если я просто запустить свой модуль на N
другом JVMs
то N
разных абоненты будут созданы и каждое сообщение в очереди прибудет N
абонентов. Что бы я хотел сделать, это только один из них (давайте сейчас скажем, что это не важно) обрабатывает это сообщение, и поэтому на самом деле я могу обрабатывать N
сообщений за раз.
Как это сделать/должно ли это быть сделано? Я в пути?
BTW, я использую OpenMQ
в качестве моей реализации, но я не знаю, если это релевантно.
Спасибо за любую помощь.
Привет, Tushar, спасибо за вашу помощь. Что такое 'Broadcast message'? Это другое сообщение, которое отправляется в очередь JMS? Также, что вы имели в виду: «Очередь, полезная для связи между точками, не очень эффективна»? Спасибо – Ittai
Я имел в виду использовать связь, основанную на теме, вместо связи на основе очереди, где вам нужно будет указать получателя при передаче сообщения или ему придется реализовать какую-то логику маршрутизатора, чтобы направить это сообщение конкретному потребителю на основе определенных критерии. –
Привет, Tushar, я немного читал о теме против Queue, и ваши решения звучат превосходно. Единственное, что я не понял, это «Установить достоверность сообщения ...». Почему мне нужно установить его действительность? Не будет ли он потребляться одним потребителем по определению механизма темы? Иттай – Ittai