Java 如何从spring集成中完成resequencer中的组
我使用以确保消息的正确顺序。当某个包含多条消息的进程结束时,我希望再次启动具有相同关联id的同一进程。它不起作用,因为特定相关id的消息组尚未完成,并且对于重排程序仍然存在,因此没有要释放的消息(所有消息从一开始就被重播,因此没有收到序列号大于第一个进程最后一个序列号的消息)。因为可以设置Java 如何从spring集成中完成resequencer中的组,java,spring,spring-integration,Java,Spring,Spring Integration,我使用以确保消息的正确顺序。当某个包含多条消息的进程结束时,我希望再次启动具有相同关联id的同一进程。它不起作用,因为特定相关id的消息组尚未完成,并且对于重排程序仍然存在,因此没有要释放的消息(所有消息从一开始就被重播,因此没有收到序列号大于第一个进程最后一个序列号的消息)。因为可以设置在完成时过期组属性,但似乎没有这样的功能。是否有可能获得所描述的功能?问题在于,与聚合器不同,从重排序器的角度来看,没有“完成”的概念-它无法知道组是否“完成” 这就是为什么它不能作为重排器本身的选项使用的原因
在完成时过期组
属性,但似乎没有这样的功能。是否有可能获得所描述的功能?问题在于,与聚合器不同,从重排序器的角度来看,没有“完成”的概念-它无法知道组是否“完成”
这就是为什么它不能作为重排器本身的选项使用的原因
您可以提供一个外部MessageGroupStore
bean-默认情况下,重排程序在内部创建自己的SimpleMessageStore
,但您可以为自己的bean提供一个引用
然后,当您知道组已“完成”时,您可以使用相关ID调用
removeMessageGroup()
,这将重置重新排序器。问题在于,与聚合器不同,从重新排序器的角度看,没有“完成”的概念-无法知道组已“完成”
这就是为什么它不能作为重排器本身的选项使用的原因
您可以提供一个外部MessageGroupStore
bean-默认情况下,重排程序在内部创建自己的SimpleMessageStore
,但您可以为自己的bean提供一个引用
然后,当您知道组已“完成”时,可以使用相关ID调用
removeMessageGroup()
,这将重置重新排序器。感谢您的快速回答。我可以想象一些“完成”的例子,比如应用于消息的序列大小或表达式(例如,对于某些头)。幸运的是,对于缺少此功能,有解决办法,所以我现在将尝试实施您的建议。感谢您的快速回答。我可以想象一些“完成”的例子,比如应用于消息的序列大小或表达式(例如,对于某些头)。幸运的是,对于缺少此功能存在解决方法,因此我现在将尝试实施您的建议。