Логика маршрутизации внутри ActiveMQ в конкретный рабочий пул

У меня есть сценарий,

У меня такая же очередь настроена для SMS и EMAILS.

Я хочу, чтобы ActiveMQ перенаправлял сообщение в конкретный пул потребителей, т.е. если это SMS, то оно должно быть направлено в пул рабочих потоков для SMS.

Итак, если мне нужно увеличить количество SMS, мне просто нужно увеличить размер пула SMS Worker Pool, а не для EMAIL worker pool.

Могу ли я использовать Apache Camel для реализации логики маршрутизации в соответствии с моими требованиями ???


person Sabyasachi    schedule 16.01.2017    source источник
comment
Можно сослаться на документацию - camel.apache.org/message-router.html, camel.apache.org/content-based-router.html   -  person Nayan Wadekar    schedule 16.01.2017


Ответы (1)


Есть несколько вариантов, чтобы поддержать это:

  1. Установите заголовок для каждого сообщения, чтобы потребители могли использовать селекторы JMS для фильтрации сообщений.

  2. Используйте виртуальное место назначения в брокере ActiveMQ (брокер может фильтровать на основе значения заголовка сообщения): http://activemq.apache.org/virtual-destinations.html

  3. Используйте компонент брокера Camel, чтобы написать собственный обработчик перехватчика: http://activemq.apache.org/broker-camel-component.html

  4. Используйте маршрутизатор сообщений Camel или маршрутизатор на основе контента, как предложил Наян.

  5. Используйте отдельные очереди для каждого типа сообщения (например, queue: //OUTBOUND.SMS, queue: //OUTBOUND.EMAIL ..)

У каждого есть свои преимущества и недостатки. # 1, # 4 и # 5 не требуют настройки на стороне сервера, что удобно для минимального обслуживания брокера.

person Matt Pavlovich    schedule 16.01.2017
comment
спасибо, Мэтт :-) Итак, я решил использовать виртуальные направления - person Sabyasachi; 17.01.2017
comment
Спасибо, Сабя. Рад слышать, что вы уже в пути. Примите, пожалуйста, мой ответ? - person Matt Pavlovich; 17.01.2017