Многоканальные JMS-слушатели Apache Camel

Я работаю с верблюдом Apache и мог бы помочь с чем-то, что я не могу понять. Я хотел бы иметь несколько слушателей в одной очереди JMS.

У меня есть следующая конфигурация для контекста верблюда

<route id="customerDataRoute" autoStartup="false">
<from uri="activemq:customer.data"/>
<to uri="dataListener"/>
<choice>
...

Я хотел бы иметь несколько слушателей в очереди customer.data, но я не уверен, правильно ли я это настроил или это просто параметр конфигурации, который я не могу прибить. Я могу запустить экземпляр, но получить только одного слушателя.

Любая помощь очень приветствуется! Спасибо!


person nemisis enforcer    schedule 14.07.2014    source источник


Ответы (1)


У вас есть несколько вариантов, о которых я могу думать:

  • Определите несколько маршрутов, которые слушают одну и ту же очередь. Это хорошо, если вы хотите, чтобы разные слушатели по какой-то причине делали разные вещи.
  • Более нормальным способом было бы определить concurrentConsumers как нечто большее, чем один. См. http://camel.apache.org/competing-consumers.html.

В этом случае у вас будет один dataListener, вызываемый из нескольких потоков, поэтому вам нужно убедиться, что он безопасен для потоков.

person matt helliwell    schedule 14.07.2014