Обработка двух или более одинаковых сообщений JMS одновременно из одной очереди - PullRequest
1 голос
/ 16 марта 2020

Рассмотрим сценарий ниже:

Application - MessageReaderApplication (Spring Boot Application)
Deployed in - PaaS_node_1 and PaaS_node_2 
Queue Manager - QM
Queue - QM_QUEUE
Concurrency - 2

MessageReaderApplication читает сообщения из QM_QUEUE и обрабатывает их в соответствии с client_number в сообщении ( client_number является уникальным атрибутом сообщение). Приложение ведет себя хорошо для двух независимых сообщений (разные client_number ), поскольку обработка одного сообщения не зависит от других.

Проблема возникает, когда сообщения приходят для одного и того же клиента (тот же client_number ) дважды в одно и то же время в очереди. В этом случае желательным действием является обработка первого сообщения перед вторым. Но здесь мы не можем предсказать порядок выполнения сообщений. Предположим, что PaaS_node_1 выбрал первое сообщение и начал обрабатывать его, а второе сообщение выбрал PaaS_node_2 и завершил обработку до обработки первого сообщения PaaS_node_1.

Как мы можем достичь такого вида управления параллелизмом в сообщениях JMS?

1 Ответ

0 голосов
/ 16 марта 2020

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

...