Как запросить или отклонить в RabbitListenerErrorHandler в ручном режиме подтверждения? - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь отклонить сообщение в RabbitListenerErrorHandler, выбрасывая AmqpRejextAndDontRequeueException.

Но он не работает в ручном режиме подтверждения (в автоматическом режиме работы нормально).

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

public class RabbitListenerExceptionHandler implements RabbitListenerErrorHandler {
    @Override
    public Object handleError(Message amqpMessage, org.springframework.messaging.Message<?> message, ListenerExecutionFailedException exception)
        throws Exception {
        log.error("RabbitListenerHandler " + exception.getMessage() + "|" + exception.getFailedMessage());
        throw new AmqpRejectAndDontRequeueException("reject");
    }
}

1 Ответ

0 голосов
/ 03 июня 2019

При использовании режима MANUAL ack слушатель отвечает за ack / nack; Контейнер не будет реагировать на любые исключения.

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

Я открыл проблему , чтобы решить эту проблему.

...