我正在使用Spring Integration和STOMP进行POC。初始POC成功。 我遵循了https://docs.spring.io/spring-integration/reference/html/stomp.html#stomp
中提到的适配器配置在我的POC中,我没有包括上述链接中的最后两个@Bean定义。
入站通道适配器和消息处理程序足以处理传入消息。
现在,我的问题是: 入站通道适配器和应用程序事件列表消息生产者有什么区别? 如示例here中所述,当我们遵循DSL时是否使用ApplicationListener?
谢谢
马西什
答案 0 :(得分:2)
好吧,正如您在有关STOMP支持的Spring Integration文档中注意到的那样,STOMP通道适配器发出了一些ApplicationEvent
。如果您处理这些事件的逻辑非常简单并且不需要进一步分发,则确实可以使用常规ApplicationListener
(@EventListener
)处理它们。但是,如果您的逻辑非常复杂,并且您可能需要在数据库中存储一个偶数(或它的一部分),或通过电子邮件发送,经过一定的聚集后并行执行,等等,那么实际上ApplicationEventListeningMessageProducer
会更好我们已经有了Spring Integration时的解决方案。
但是,如果您谈论StompInboundChannelAdapter
的性质和与上述事件的关系,则需要研究StompIntegrationEvent
的实现。您很快就会意识到STOMP帧中没有payload
的事件。因此,StompInboundChannelAdapter
的确做到了这一点-它根据STOMP帧中的正文生成消息。
该通道适配器发出的所有上述事件都与该适配器状态共享有关,以便在应用程序中进行可能的管理。