Spring Cloud Stream @StreamListener和Spring Integration的Resequencer模式

时间:2018-11-22 11:33:20

标签: spring-integration spring-cloud-stream enterprise-integration

AFAIK的Spring Cloud Stream项目基于Spring Integration。因此,我想知道在触发StreamListener处理程序之前是否有一种很好的方法来重新排序入站消息的子集?还是我需要使用Spring Integration的XML或Java DSL配置从头开始组装整个IntegrationFlow

我的用例如下。在大多数情况下,我会处理有关Kafka主题的入站消息。但是,必须根据CORRELATION_IDSEQUENCE_NUMBERSEQUENCE_SIZE标头对一些事件进行重新排序。换句话说,我想尽可能多地使用StreamListener,而只是为某些事件插入重新排序策略。

1 个答案:

答案 0 :(得分:1)

是的,您将需要使用Spring Integration。实际上,Spring Cloud Stream实际上只是一个绑定框架。它通过绑定器将消息处理程序绑定到消息代理。 消息处理程序本身由用户提供。 @StreamListener注释几乎等同于Spring Integration的@ServiceActivator,具有很少的额外功能(例如,条件路由),但除此之外,它只是一个消息处理程序

现在,您已经知道,可以使用Spring Integration(SI)来实现消息处理程序或内部SI流,这是正常现象,建议在复杂情况下使用。

也就是说,我们确实提供了实现某些EIP组件的开箱即用应用程序,例如,我们确实有aggregator应用程序,您可以将其用作实现重新排序器的起点。此外,鉴于我们有一个 aggregator 应用程序,而不是 reequencer ,如果您有兴趣的话,我们将很高兴为您提供帮助。 我希望这能回答您的问题。