【问题标题】:Error Handling in Scatter-Gather (Mule 4)Scatter-Gather 中的错误处理 (Mule 4)
【发布时间】:2021-10-07 06:52:08
【问题描述】:

我有一个问题。

在一次采访中,有人问我,如果其中一条 scatter-gather 路由失败,我们会得到输出。我回答说不,因为 scatter-gather 总是给出从所有路由中获取的合并有效负载,然后他们问我是否还想从成功的路由中获取有效负载,我应该怎么做 -> 我用 Try scope 和 on 回答-错误继续。 (我希望我在这里,如果不是,请解释一下)。

他们给我的下一个场景是这样的:如果我为 scatter-gather 设置了 on-error-propagate,并且其中还有一个有效负载。因此,当路由失败并且处理程序进入错误传播时,是否会打印存在于那里的有效负载。我对这个问题的回答是肯定的,我说因为 on-error-propagate 会执行它的所有步骤,所以将打印其范围内的有效负载,然后流程将退出。

我不知道这是否正确,所以请帮助我为这个场景提供正确的答案。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: mule-studio mulesoft mule-component mule4 mule-esb


【解决方案1】:

我不确定这是否是解决这些问题的正确平台,但我会尽力回答。

有人问我,如果 scatter-gather 的路径之一失败,我们会得到输出吗?我回答说不,因为 scatter-gather 总是给出从所有路由中获取的合并有效负载

Scatter-gather 同时执行所有路由并生成所有 Mule 事件(不仅仅是有效负载)的 LinkedHashMap。当然可以提取每个事件的有效负载,或者可以使用 flatten() 之类的函数线性展平内容。如果其中一个路由失败并且没有进行错误处理,则会引入一个错误对象,并且 scatter-gather 将失败。

他们问我是否还想从成功的路由中获取有效负载,我应该怎么做 -> 我回答了 Try scope and on-error continue。

你的回答对我来说似乎很好。虽然,请注意 on-error-continue 应该在 scatter-gather 调用的另一个流上。将它与 scatter-gather 放在同一流中可能会抑制引发的错误,但不会继续执行同一流中的下一个组件。

如果我为 scatter-gather 设置了 on-error-propagate,并且其中还有一个有效负载。因此,当路由失败并且处理程序进入 on-error-propagate 时,是否会打印存在于那里的有效负载。

该语句让我有点困惑,因为它没有指定错误传播的位置。如果打印组件在 on-error-propagate 范围内并且处理程序进入 on-error-propagate,它肯定会打印。但是,如果它只有有效负载,则流将永远不会转到下一个组件,并且将向父流返回一个错误对象(如果没有父流,则抛出错误)。

【讨论】:

    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多