2016-05-04 2 views
0

Есть ли способ реализовать топологию с помощью ActiveMQ, где P является издателем, s_a является абонентом службы A, а s_b1 и s_b2 являются абонентами службы B. последние устанавливаются в кластере для балансировки нагрузки (поэтому s_b1 или s_b2 получает сообщение, но не оба).ActiveMQ - Объединение публикации-подписки и одноранговой сети

Есть ли способ объединить публикацию-подписку с одноранговым обменом сообщениями, чтобы один из абонентов был в очереди, которую слушают два потребителя?

Спасибо,

Gil

ответ

2

Да, это может быть сделано.

Возможно, вы захотите посмотреть Apache ActiveMQ Artemis, который реализует JMS 2.0 и поддерживает то, что вы просите из коробки. JMS 2.0 позволяет нескольким подписчикам на одну тему загружать баланс кластера.

Для ActiveMQ и JMS 1.0 вместо этого вы можете использовать Virtual Destinations. Они работают с соглашениями об именах.

Если вы употребите свою тему: VirtualTopic.StockPrice и опубликуйте на нем сообщения, вы сможете использовать их в очередях по имени Consumer.Consumer1.VirtualTopic.StockPrice, Consumer.Consumer2.VirtualTopic.StockPrice и т. Д. Consumer1 может быть любым.

Вы можете перенастроить ActiveMQ для использования других имен для виртуальных целей (префикс, суффикс и т. Д.).