有没有办法在子流上调用 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
配置。如果您在将来自子流的回复发送回分散-收集以供聚合器完成其工作之前不将工作转移到其他线程,那么一切都应该按正确的顺序收集。
另一个技巧是配置收集器部分,以便在您从组中构建结果时对消息重新排序。这可能是单元测试的最佳方法:我认为您不会对生产的阻塞解决方案感到满意。
我通过调用 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
配置。如果您在将来自子流的回复发送回分散-收集以供聚合器完成其工作之前不将工作转移到其他线程,那么一切都应该按正确的顺序收集。
另一个技巧是配置收集器部分,以便在您从组中构建结果时对消息重新排序。这可能是单元测试的最佳方法:我认为您不会对生产的阻塞解决方案感到满意。