2013-05-16 2 views
0

Требование: Одна очередь activemq должна запускаться на одной машине (скажем, machine1). К этой очереди следует обращаться из машины 1 и другой машины (скажем, machine2). И прослушиватель будет работать только в machine1.So, все сообщения, которые я отправляю на machine1 и machine2, должны войти в очередь avaialble в machine1 и должны быть приняты слушателем, доступным на той же машине (machine1).Активный потребитель MQ получает только альтернативные сообщения

проблема: все сообщения, которые я отправил машинке1 и machine2, входят в очередь, но слушатель получает только альтернативные сообщения. Если 1, 3, 5 и не может получать сообщение 2, 4 .....

Наблюдение. Предположим, если есть слушатели в machine1 и machine2, они поступают правильно, т.е. listenr в machine1 получает 1, 3, 5 ..... и слушатель в machine2 получает 2,4,6 ...........

ответ

2

ActiveMQ использует распределение RoundRobin по умолчанию. Итак, если, как вы объяснили, у вас есть 2 потребителя в вашей очереди (machine1 и machine2), machine1 получит только половину сообщений. Даже если у вас нет сообщений обработки процесса на компьютере2, клиент ActiveMQ на этом хосте, вероятно, их поглощает. Если вы хотите, чтобы 2 клиента могли использовать сообщения, вы должны использовать тему вместо очереди.

+0

we необходимо сохранить данные и обработать любую проблему с сервером. Если мы используем эту тему, как сохранить данные ?. Также мы должны прочитать msg по порядку. Таким образом, должен быть запущен только один потребитель (ресивер). –

+0

@SelvamR Используйте надежного абонента, если вы хотите сохранять и сохранять сообщения для тем, в которых подписчики находятся в автономном режиме: http://activemq.apache.org/manage-durable-subscribers.html – raffian

0

У меня есть аналогичное требование, когда у меня есть несколько продюсеров, но только один потребитель. Похоже, что очередь очереди не соответствует требованиям, поскольку она, кажется, обрабатывается циклически, хотя я прокомментировал прослушиватели сообщений на всех на серверах, кроме тех, которые должны выполнять всю обработку. Топик решает эту проблему, но, к сожалению, похоже, что я не могу включить сохранение данных поверх перезапуска сервера для тем. Любая помощь будет принята с благодарностью.

Смежные вопросы