【问题标题】:Is there a way to call Scatter Gather on Subflows and maintain the order of execution?有没有办法在子流上调用 Scatter Gather 并保持执行顺序?
【发布时间】:2021-09-20 11:45:54
【问题描述】:

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

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

即其中一个子流返回低于状态

 <Status>
    <StatusCode>-1000</StatusCode>
    <Severity>Error</Severity>
    <StatusDesc>ERROR</StatusDesc>
</Status>

和其他子流返回

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

当我写同样的 Junits 时,Junit 有时会通过,有时会失败,因为状态标签的顺序会有所不同。那么无论如何要确保 1 个子流的响应被认为是第一个,而其他子流的响应被认为是稍后?

【问题讨论】:

    标签: spring-integration spring-integration-dsl


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2021-06-23
      • 2016-07-14
      • 2011-03-28
      • 2018-12-11
      • 2018-02-25
      • 1970-01-01
      • 2019-07-01
      • 2021-07-03
      相关资源
      最近更新 更多