首页 > 解决方案 > 如何在 DirectMessageListenerContainer 中实现 ApplicationListener

问题描述

任何人都可以指导如何在 DirectMessageListenerContainer(spring rabbitmq) 中以编程方式注册 ApplicationListener 来处理 ListenerContainerConsumerFailedEvent

提前致谢。

标签: spring-rabbit

解决方案


监听器没有注册到容器中;它只是作为一个添加@Bean到 Spring 应用程序上下文中;容器发布事件,Spring 将其分派给每个注册的侦听器。

编辑

不要将代码放在注释中;它们呈现不佳 - 始终编辑问题并添加您已完成的评论。

像这样创建容器意味着您将错过所有 Spring 的优点和注入的依赖项;最好将 a 添加DirectRabbitListenerContainerFactory @Bean到应用程序上下文并使用它来创建容器 - 这样事件发布者将被注入。

你只需要一个听众;它将接收来自所有容器的事件。

如果您根本不使用 Spring(spring-rabbit 除外),那么您需要自己满足所有容器的...Aware接口并调用afterPropertiesSet().

在这种情况下,您将setApplicationEventPublisher()与将接收事件的自定义发布者联系。


推荐阅读