Объединение сообщений JMS из многих мест назначения в одну очередь

Каким может быть лучший способ объединить сообщения из разных источников (фактически очередей/тем) в одну очередь/тему, а затем использовать ее. Я пытаюсь разработать приложение для получения сообщений из разных тем в JMS с использованием weblogic.


person Acharya    schedule 11.07.2013    source источник


Ответы (2)


Вы можете написать свой собственный «агрегатор» как отдельное Java-приложение:

  • Для каждой очереди/темы есть читатель в отдельной ветке.
  • Каждый читатель снова отправляет полученное сообщение в «агрегированную очередь».

  • Есть еще один поток для прослушивания в "совокупной очереди".

В качестве варианта вы можете использовать очередь JVM (например, java.util.concurrent.ArrayBlockingQueue) в качестве "совокупной очереди". Это быстрее, не требует другой очереди MQ, не требует пропускной способности сети, но не является постоянным.


Другая идея состоит в том, чтобы использовать "компонент, управляемый сообщениями (MDB)" для каждой входящей очереди/темы:

  • Опять же, каждый из этих MDB просто читает сообщение и повторно отправляет его в «агрегированную очередь».
  • Пусть другой MDB прослушивает «совокупную очередь».
person Beryllium    schedule 11.07.2013

Несколько предложений по требованиям к качеству. Я считаю, что вы должны рассмотреть их. Они будут тесно связаны с вашим техническим решением.

  1. такая потеря сообщения приемлема? ack клиента можно было бы рассмотреть. например Очередь памяти находится посередине, например. входящая очередь1...n -> ArrayBlockingQueue в памяти -> исходящая очередь. Данные в ArrayBlockingQueue будут потеряны при сбое приложения.

  2. этот дубликат сообщения приемлем для одиночной исходящей очереди? Я бы предложил да. Установите применимый уровень PossibleDuplicateFlag, чтобы клиент знал об этом.

  3. как быстро входящие сообщения в секунду в очереди входящих diff? один сеанс очереди имеет только уникальный поток. Производительность должна быть рассмотрена заранее.

person baoying.wang    schedule 20.07.2013