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())代码>?是的,这就是我的意思