Акка Верблюд несколько потребителей
Я использую akka + camel для получения сообщения от activemq, и я пытаюсь выяснить, как развернуть этот потребитель на нескольких машинах без дублирования сообщения. В этом случае я использую сообщение из темы, и activemq должен знать, что у меня одна система akka на разных машинах, а не на разных независимых системах.
Я попытался выполнить это с помощью кластера akka, но тот пример, использующий внешний интерфейс, подписывающийся на кластер бэкэнда, не помогает, так как мой субъект "бэкэнда" сам является потребителем activemq, и я не могу сказать activemq подписаться на мой кластер.
Есть идеи?
1 ответ
Версии JMS < 2.0 не позволяют нескольким узлам совместно использовать тематическую подписку (не дублируя сообщение для каждого потребителя). Чтобы справиться с этим, ActiveMQ предоставляет Виртуальную тему (вы можете использовать сообщения, опубликованные в теме из очереди, что позволяет нескольким потребителям - балансировка нагрузки).
Это все соглашения об именах. Так что вы просто публикуете в теме VirtualTopic.Orders
а затем потреблять из очереди Consumer.ClusterX.VirtualTopic.Orders
, Соглашения об именах могут быть изменены - см. Документы.