我使用resequencer来确保消息的正确顺序。当一些具有多个消息的进程结束时,我想再次使用相同的相关ID启动相同的进程。它不起作用,因为特定相关id的消息组没有完成,并且仍然存在重定序器,因此没有消息要释放(所有消息都从开始重放,因此没有更多序列号的消息,然后从第一个进程的最后一个消息被接收)。对于aggregator,可以设置expire-groups-upon-completion
属性,但似乎resequencer没有此类功能。是否有可能获得所描述的功能?
答案 0 :(得分:0)
问题在于,与聚合器不同,从重定序器的角度来看,没有“完成”的概念 - 它无法知道该组是“完整的”。
这就是为什么它不能作为重新定序器本身的选项。
你可以提供一个外部MessageGroupStore
bean - 重定序器默认在内部创建它自己的SimpleMessageStore
,但是你可以提供你自己的bean的引用。
然后,当您知道该组是“完整”时,您可以使用相关ID调用removeMessageGroup()
,这将重置重新定序器。