Что происходит с неподтвержденными сообщениями ActiveMQ - PullRequest
1 голос
/ 18 февраля 2020

Если в ActiveMQ создана очередь, которая имеет одного производителя (который является режимом подтверждения клиента) и одного прослушивателя, в методе которого onMessage после успешной обработки сообщения только оно подтверждается. Скажите, если есть исключение, и сообщение остается неподтвержденным и, следовательно, остается в очереди. Будет ли оно снова отправлено потребителю? Или что происходит с такими сообщениями?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Если сообщение не было обработано потребителем из-за какого-то исключения, тогда полезно отправить отрицательное подтверждение. Например NACK с протоколом STOMP. Затем сообщение остается в очереди. ActiveMQ может быть настроен на попытки повторной доставки при получении NACK от потребителя.

https://stomp.github.io/stomp-specification-1.2.html#NACK

0 голосов
/ 18 февраля 2020

Все неподтвержденные сообщения остаются в очереди.

Будет ли оно снова отправлено потребителю?

Да, оно будет отправлено потребителю снова.

Я не уверен, есть ли у Active MQ свойство очереди, которое при установке прекратит доставлять одно и то же сообщение потребителю снова и снова и вместо этого переместит его в очередь, называемую очередью возврата или очередь недоставленных сообщений. У IBM MQ есть свойство в очереди, BOTHRESH - порог возврата - каждый раз, когда сообщение доставляется потребителю, счетчик доставки (или счетчик возврата) увеличивается. Когда сообщение доставляется снова, IBM MQ проверит, превышает ли счет возврата сообщения больше, чем BOTHRESH. В этом случае сообщение перемещается в очередь возврата, если она установлена, или в очередь недоставленных сообщений.

...