Потеряно ли сообщение, если при публикации сообщения в RabbitMQ возникает проблема, не имеющая отношения к сети?

Я использую Spring AMQP для публикации сообщений в RabbitMQ. Рассмотрим сценарий:
1. Клиент Java отправляет сообщение в MQ, используя amqpTemplate.convertAndSend ()
2. Но RabbitMQ не работает ИЛИ возникла некоторая проблема, связанная с отсутствием информации.

В этом случае сообщение будет потеряно? ИЛИ Есть ли способ сохранить его и повторить попытку?

Я также проверил модель публикации-подтверждения, но, как я понял, в конечном итоге мы должны обрабатывать сообщения nack через кодирование самостоятельно.


person rupesh    schedule 11.04.2017    source источник
comment
Нам нужно справиться с этим. Логика повторения должна быть в нашем коде. Вы можете использовать подтверждение издателя, чтобы проверить, успешно ли опубликовано сообщение. Если нет, повторите попытку из кода.   -  person Girdhar Sojitra    schedule 11.04.2017
comment
Вы можете использовать RetryTemplate, избегая необходимости добавлять логику повтора.   -  person Gary Russell    schedule 11.04.2017


Ответы (1)


RabbitTemplate поддерживает добавление RetryTemplate, которое можно настроить с любой семантикой повторных попыток. Он будет обрабатывать ситуации, когда брокер не работает.

См. Добавление возможностей повтора.

Вы можете использовать транзакцию или подтверждение издателя, чтобы кролик защитил сообщение.

person Gary Russell    schedule 11.04.2017