Потребление сообщений JMS - PullRequest
1 голос
/ 17 мая 2011

Я не уверен, что происходит в приведенных ниже сценариях, было бы очень полезно, если бы кто-то это объяснил.

Производитель (P) отправляет сообщения M1, M2, M3, M4, M5, M6, M7; при условии, что оно отправлено от времени T1 до T7.

Предположим, ActiveMQ используется в качестве JMS-провайдера (AMQ)

Потребитель сообщений (L) будет слушателем, связанным с темой. Название темы: jmsTopic

Сценарий 1:

AMQ работает, L не подключен к jmsTopic в AMQ. P отправляет M1 в M7 в jmsTopic. Если L подключен к jmsTopic в момент времени, скажем, T8, который больше, чем T7, он получит сообщения от M1 до M7 или только сообщения, отправленные в тему после времени T8.

Сценарий 2: AMQ работает, L подключен и слушает jmsTopic, P отправляет M1 на M4. L получает от M1 до M4. Тем временем L обрабатывает M1-M4, P отправляет M5-M7, однако L вылетает во время обработки M4. Если L снова подключается к jmsTopic, получает ли он от M5 до M7, или L получает только те сообщения, которые были отправлены после того, как L подключился к jmsTopic.

Сценарий 3: AMQ работает, L подключен и слушает jmsTopic, P отправляет M1 на M7. Однако AMQ вылетает; L осведомлен о состоянии AMQ и повторно подключается после запуска и запуска AMQ.

1 Ответ

1 голос
/ 17 мая 2011

Сценарий 1: AMQ работает, L - нет подключен к jmsTopic в AMQ. P отправляет M1 до M7 до jmsTopic. Если L подключен к jmsTopic в то время, скажем, T8 что больше, чем Т7, не так ли получать сообщения от M1 до M7 или только сообщения, которые отправляются в тему после времени Т8.

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

Сценарий 2: AMQ работает, L - подключен и слушает jmsTopic, P отправляет M1 к M4. L получает от M1 до M4. Тем временем L обрабатывает от M1 до M4, P отправляет M5 в M7, однако L вылетает во время обработки M4. Если L снова подключается к jmsTopic, он получает от M5 до M7 или только сообщения, которые были отправлены после L имеет подключен к jmsTopic будет получен Л.

То же, что и # 1: все сообщения M5 и новее будут приниматься слушателем.

Сценарий 3: AMQ работает, L - подключен и слушает jmsTopic, P отправляет M1 к M7. Однако AMQ вылетает; L знает о состоянии AMQ и восстанавливает соединение после запуска AMQ.

Настройка AMQ для гарантированной доставки; все сообщения будут сериализованы для гарантии доставки при получении.

...