Spring入站通道适配器和应用程序事件列表消息生成器之间的区别

时间:2019-12-06 21:30:33

标签: spring-integration spring-integration-dsl

我正在使用Spring Integration和STOMP进行POC。初始POC成功。 我遵循了https://docs.spring.io/spring-integration/reference/html/stomp.html#stomp

中提到的适配器配置

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

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

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

谢谢

马西什

1 个答案:

答案 0 :(得分:2)

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

但是,如果您谈论StompInboundChannelAdapter的性质和与上述事件的关系,则需要研究StompIntegrationEvent的实现。您很快就会意识到STOMP帧中没有payload的事件。因此,StompInboundChannelAdapter的确做到了这一点-它根据STOMP帧中的正文生成消息。

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