Spring 在SimpleRableBitListenerContainerFactory中使用RetryInterceptorBuilder重试时,如何启用异常日志记录?

Spring 在SimpleRableBitListenerContainerFactory中使用RetryInterceptorBuilder重试时,如何启用异常日志记录?,spring,spring-amqp,spring-rabbit,Spring,Spring Amqp,Spring Rabbit,我有一个SimpleRableBitListenerContainerFactory定义如下: @Bean public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContain

我有一个
SimpleRableBitListenerContainerFactory
定义如下:

@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory);
    factory.setMessageConverter(rabbitMQEventMessageConverter());
    factory.setRecoveryBackOff(new ExponentialBackOff());
    factory.setConcurrentConsumers(3);
    factory.setMaxConcurrentConsumers(10);
    factory.setAdviceChain(RetryInterceptorBuilder
            .stateless()
            .maxAttempts(Integer.MAX_VALUE)
            .backOffOptions(1000, 2, 5000)
            .build());
    return factory;
}
问题在于,如果用
@RabbitListner
注释的方法抛出异常,则不会记录该异常。虽然该方法已重试,但我希望在下次重试之前查看stacktrace日志。我怎样才能做到这一点


请注意,我使用的不是SpringBoot,而是香草Spring4.x(如果这有什么区别的话)

不,你真的不需要Spring Boot来解决这个问题。您可以看到该选项名为
setAdviceChain()
。因此,您确实可以实现一个简单的
MethodInterceptor
,并在重试后将其添加到链中。在这个建议中,您可以捕获
调用的异常。继续()
,记录它并重试,让重试建议执行其逻辑