DirectMessageListenerContainer печатает трассировку стека при исчерпании политики повторных попыток - PullRequest
0 голосов
/ 24 октября 2018

Глядя на исходный код для класса org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer внутри метода callExecuteListener(Message message, long deliveryTag), происходит следующее

  1. executeListener(getChannel(), message); называется
  2. Если выдается исключение, регистратор печатает следующее сообщение со трассировкой стека logger.error("Failed to invoke listener", e);

Мне не нужна трассировка стека для загрязнения журнала в ситуациях AmqpRejectAndDontRequeueException, вызванных, потому что мой RetryПолитика исчерпана, однако мне нужны трассировки стека для других исключений.

Я не вижу простого механизма для переопределения этого поведения.Какие у меня есть варианты, кроме полного отключения ведения журнала для DirectMessageListenerContainer или написания фильтра slf4j?Я что-то пропускаю?

1 Ответ

0 голосов
/ 24 октября 2018

Нет, вы ничего не пропустите.Мы недавно добавили это туда:

if (causeChainHasImmediateAcknowledgeAmqpException(e)) {
                if (this.logger.isDebugEnabled()) {
                    this.logger.debug("User requested ack for failed delivery: " + deliveryTag);
                }
                handleAck(deliveryTag, channelLocallyTransacted);
            }

Итак, я думаю, мы могли бы улучшить там логику, чтобы пропустить также AmqpRejectAndDontRequeueException.

Не стесняйтесь поднять билет JIRA по этому вопросу.Также вклад приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...