首页 > 解决方案 > Spring Inbound 通道适配器和应用程序事件列表消息生产者之间的区别

问题描述

我正在使用 Spring Integration 和 STOMP 开发 POC。初始 POC 成功。我遵循了https://docs.spring.io/spring-integration/reference/html/stomp.html#stomp中提到的适配器配置

在我的 POC 中,我没有包含上述链接中的最后两个 @Bean 定义。

入站通道适配器和消息处理程序足以处理传入消息。

现在,我的问题是:入站通道适配器应用程序事件列表消息生产者有什么区别?当我们遵循此处示例中提到的 DSL 时,是否使用了 ApplicationListener ?

谢谢,

马赫什

标签: spring-integrationspring-integration-dsl

解决方案


ApplicationEvent好吧,正如您在关于 STOMP 支持的 Spring Integration 文档中注意到的那样, STOMP 通道适配器发出了一些s。如果您处理这些事件的逻辑非常简单并且不需要进一步分发,那么您确实可以使用常规ApplicationListener( ) 来处理它们。@EventListener但是,如果您的逻辑非常复杂,并且您可能需要在某个数据库中存储一个偶数(或其部分),或者通过电子邮件发送,在一些聚合之后并行执行,等等,那么ApplicationEventListeningMessageProducer当我们有 Spring 时,这确实是更好的解决方案已经集成在船上。

但是,如果您谈论StompInboundChannelAdapter与那些提到的事件的性质和关系,您需要查看StompIntegrationEvent实现。您很快意识到 STOMP 框架中没有事件payload。所以,这就是真正做的事情StompInboundChannelAdapter——它根据来自 STOMP 框架的主体生成消息。

从该通道适配器发出的所有提到的事件都更多地与该适配器状态共享有关,以便在您的应用程序中进行可能的管理。


推荐阅读