Акка Верблюд несколько потребителей

Я использую akka + camel для получения сообщения от activemq, и я пытаюсь выяснить, как развернуть этот потребитель на нескольких машинах без дублирования сообщения. В этом случае я использую сообщение из темы, и activemq должен знать, что у меня одна система akka на разных машинах, а не на разных независимых системах.

Я попытался выполнить это с помощью кластера akka, но тот пример, использующий внешний интерфейс, подписывающийся на кластер бэкэнда, не помогает, так как мой субъект "бэкэнда" сам является потребителем activemq, и я не могу сказать activemq подписаться на мой кластер.

Есть идеи?

1 ответ

Решение

Версии JMS < 2.0 не позволяют нескольким узлам совместно использовать тематическую подписку (не дублируя сообщение для каждого потребителя). Чтобы справиться с этим, ActiveMQ предоставляет Виртуальную тему (вы можете использовать сообщения, опубликованные в теме из очереди, что позволяет нескольким потребителям - балансировка нагрузки).

Это все соглашения об именах. Так что вы просто публикуете в теме VirtualTopic.Orders а затем потреблять из очереди Consumer.ClusterX.VirtualTopic.Orders, Соглашения об именах могут быть изменены - см. Документы.

http://activemq.apache.org/virtual-destinations.html

Другие вопросы по тегам