Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从spring集成中完成resequencer中的组_Java_Spring_Spring Integration - Fatal编程技术网

Java 如何从spring集成中完成resequencer中的组

Java 如何从spring集成中完成resequencer中的组,java,spring,spring-integration,Java,Spring,Spring Integration,我使用以确保消息的正确顺序。当某个包含多条消息的进程结束时,我希望再次启动具有相同关联id的同一进程。它不起作用,因为特定相关id的消息组尚未完成,并且对于重排程序仍然存在,因此没有要释放的消息(所有消息从一开始就被重播,因此没有收到序列号大于第一个进程最后一个序列号的消息)。因为可以设置在完成时过期组属性,但似乎没有这样的功能。是否有可能获得所描述的功能?问题在于,与聚合器不同,从重排序器的角度来看,没有“完成”的概念-它无法知道组是否“完成” 这就是为什么它不能作为重排器本身的选项使用的原因

我使用以确保消息的正确顺序。当某个包含多条消息的进程结束时,我希望再次启动具有相同关联id的同一进程。它不起作用,因为特定相关id的消息组尚未完成,并且对于重排程序仍然存在,因此没有要释放的消息(所有消息从一开始就被重播,因此没有收到序列号大于第一个进程最后一个序列号的消息)。因为可以设置
在完成时过期组
属性,但似乎没有这样的功能。是否有可能获得所描述的功能?

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

这就是为什么它不能作为重排器本身的选项使用的原因

您可以提供一个外部
MessageGroupStore
bean-默认情况下,重排程序在内部创建自己的
SimpleMessageStore
,但您可以为自己的bean提供一个引用


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

问题在于,与聚合器不同,从重新排序器的角度看,没有“完成”的概念-无法知道组已“完成”

这就是为什么它不能作为重排器本身的选项使用的原因

您可以提供一个外部
MessageGroupStore
bean-默认情况下,重排程序在内部创建自己的
SimpleMessageStore
,但您可以为自己的bean提供一个引用


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

感谢您的快速回答。我可以想象一些“完成”的例子,比如应用于消息的序列大小或表达式(例如,对于某些头)。幸运的是,对于缺少此功能,有解决办法,所以我现在将尝试实施您的建议。感谢您的快速回答。我可以想象一些“完成”的例子,比如应用于消息的序列大小或表达式(例如,对于某些头)。幸运的是,对于缺少此功能存在解决方法,因此我现在将尝试实施您的建议。