如何从spring整合中完成重定序器组

时间:2016-04-04 10:36:33

标签: java spring spring-integration

我使用resequencer来确保消息的正确顺序。当一些具有多个消息的进程结束时,我想再次使用相同的相关ID启动相同的进程。它不起作用,因为特定相关id的消息组没有完成,并且仍然存在重定序器,因此没有消息要释放(所有消息都从开始重放,因此没有更多序列号的消息,然后从第一个进程的最后一个消息被接收)。对于aggregator,可以设置expire-groups-upon-completion属性,但似乎resequencer没有此类功能。是否有可能获得所描述的功能?

1 个答案:

答案 0 :(得分:0)

问题在于,与聚合器不同,从重定序器的角度来看,没有“完成”的概念 - 它无法知道该组是“完整的”。

这就是为什么它不能作为重新定序器本身的选项。

你可以提供一个外部MessageGroupStore bean - 重定序器默认在内部创建它自己的SimpleMessageStore,但是你可以提供你自己的bean的引用。

然后,当您知道该组是“完整”时,您可以使用相关ID调用removeMessageGroup(),这将重置重新定序器。