С точки зрения Spring AMQP, использование режима подтверждения MANUAL означает, что «приложение» несет полную ответственность за получение сообщений.
Опять же, с точки зрения Spring AMQP, republishToDlq считается «успешной» доставкой.
Первый вопрос: «Каков ваш вариант использования для РУЧНОЙ»? Это редко требуется и часто используется по ошибке.
Тем не менее, я вижу аргумент, который, опять же, с точки зрения Spring AMQP, связыватель является частью приложения, и мы должны посмотреть на получение сообщения после публикации к DLQ в подшивке (когда режим подтверждения является ручным).
Пожалуйста, откройте новую функцию GitHub для подшивки, и мы посмотрим.
А пока Обходной путь заключается в том, чтобы перехватить исключение в вашем слушателе и подтвердить (а не nack) сообщение перед тем, как повторно выдать исключение.
Но вы должны подумать, действительно ли нужны ручные подтверждения.