2014-09-04 2 views
0

Если у меня есть 3 очереди приоритета 1,2 & 3 соответственно. Я хочу, чтобы мой потребитель потреблял сначала из очереди с приоритетом 1, затем 2 & и так далее. Если в случае, если очередь с более высоким приоритетом пуста, потребитель может потреблять из очереди с более низким приоритетом. Можно ли получить от JMS или ActiveMQ или любым другим способом? Как?У меня несколько очередей, и я хочу установить приоритеты для этих очередей. Возможно ли это в JMS?

ответ

1

Вы должны сами контролировать эту логику, используя этот метод. Для ActiveMQ или любого другого JMS-провайдера вы просто используете другую очередь.

Однако вы можете использовать одну очередь для приоритета сообщения. Существует несколько способов, как это сделать, как описано in the documentation.

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

В обоих случаях вашему продюсеру просто нужно быть достаточно умным, чтобы заголовок JMSPriority был любым приоритетом, о котором говорит логика.

Единственным недостатком является тот факт, что у вас есть конфигурация брокера, чтобы настроить эту очередь специально, а не автоматическую.

+0

Можете ли вы объяснить, как «брокер выберет приоритет»? Вы можете объяснить это немного больше? – Swapnil

+0

Если вы настроите очередь polciy с приоритетомMessages = "true", то брокер отправит сообщения в порядке приоритета, а не в FIFO. Приоритеты использования ActiveMQ несколько зависят от постоянного хранилища, которое вы используете. Все объяснено в ссылке, которую я вам дал. –

+0

Мы используем SOAP над JMS. Если предположим, что мы даем 10 запросов, и эти сообщения с запросом сохраняются в очереди, эти запросы обрабатываются только по одному. Как мы можем параллельно обрабатывать несколько запросов? – Swapnil

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