Java spring rabbitmq中的自动注入自定义ErrorHandler

Java spring rabbitmq中的自动注入自定义ErrorHandler,java,spring-boot,dependency-injection,spring-integration,spring-rabbit,Java,Spring Boot,Dependency Injection,Spring Integration,Spring Rabbit,我们知道我们可以注入自定义消息转换器: @Bean MessageConverter messageConverter(){ return new CustomMessageConverter(); } 但是,在出现ErrorHandler的情况下,它不起作用。为什么?我能从代码中得出任何结论吗?没错。Spring Boot的RabbitAnnotationDrivenConfiguration不支持该注入 您必须声明自己的SimpleRableBitListenerContainerF

我们知道我们可以注入自定义消息转换器:

@Bean
MessageConverter messageConverter(){
   return new CustomMessageConverter();
}

但是,在出现
ErrorHandler
的情况下,它不起作用。为什么?我能从代码中得出任何结论吗?

没错。Spring Boot的
RabbitAnnotationDrivenConfiguration
不支持该注入

您必须声明自己的
SimpleRableBitListenerContainerFactory
@Bean
,并提供所需的
ErrorHandler
注入以及所有其他必需选项,包括
MessageConverter

请注意,重写开箱即用bean时,应使用
rabbitListenerContainerFactory
名称指定自己的bean,以满足以下条件:

@Bean
@ConditionalOnMissingBean(name = "rabbitListenerContainerFactory")
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(

谢谢,我完全按照你写的做了。自己的容器,所以所有配置。在本例中,MessageConverter、ErrorHandler可以是非bean,但我将其注释为bean以避免调用新操作符。这是个好习惯吗?第二个问题:我检查了
ErrorHandler
不是自动注入的——我应该如何在代码中检查它?你说的“在代码中”是什么意思?我向您展示了
RabbitAnnotationDrivenConfiguration
这是一个在matterDo上默认配置所有内容的地方,您的意思是:
rabbitListenerContainerFactoryConfigurer
没有指令:
configurer.setErrorHandler(this.errorHandler.getIfUnique())?是的,这就是我的意思