有没有办法在子流上调用 Scatter Gather 并保持执行顺序?

Is there a way to call Scatter Gather on Subflows and maintain the order of execution?

我通过调用 scattergather 并聚合来自 2 个子流的响应来并行调用 2 个子流。

状态是两个子流返回的元素(标签)之一。

即状态

下的子流returns之一
 <Status>
    <StatusCode>-1000</StatusCode>
    <Severity>Error</Severity>
    <StatusDesc>ERROR</StatusDesc>
</Status>

和其他子流程returns

    <Status>
        <StatusCode>0</StatusCode>
        <Severity>Info</Severity>
        <StatusDesc>INFO</StatusDesc>
    </Status>

当我为此编写 Junits 时,由于 Status 标记的顺序不同,Junit 有时会通过,有时会失败。那么有没有办法确保 1 个子流的响应被认为是第一个而其他子流的响应被认为是稍后?

这完全取决于您对这些分散-收集子流的 MessageChannel 配置。如果您在将来自子流的回复发送回分散-收集以供聚合器完成其工作之前不将工作转移到其他线程,那么一切都应该按正确的顺序收集。

另一个技巧是配置收集器部分,以便在您从组中构建结果时对消息重新排序。这可能是单元测试的最佳方法:我认为您不会对生产的阻塞解决方案感到满意。