如何处理多个流程中的错误?

时间:2015-10-30 02:17:52

标签: mule

我在相同的config-xml中有4-5个流,我想以相同的方式处理这些流中的错误以避免redundency。 所以我做的是..创建了一个全局异常策略,并用它来引用所有流程。 但有更好的选择吗? 就像在子流中复制流的一些消息处理器,然后将异常策略附加到那些子流一样?

2 个答案:

答案 0 :(得分:2)

没有比这更好的方法了。子流不允许异常处理程序。

当所有流共享单个消息源时经常使用的是在带有消息源的流上放置异常处理程序,而使用flow-ref调用的其余内容中没有任何内容。

答案 1 :(得分:1)

您有几种选择。您可以定义默认的全局异常策略以及一个或多个全局异常策略。你注意到这可能有点不灵活,但是我们有一些模式可以在不重复流逻辑的情况下提供适当的灵活性和重用。

您可以使用private flows来封装也共享相同错误处理的共享流逻辑。私有流只是一个没有消息源的流。如果私有流具有异常策略,则将使用它而不是调用流的异常策略。

另一种模块化错误处理代码的方法是在异常策略中使用flow-ref。也许您有不同类型的错误只需要共享某些行为,例如以某种方式记录错误并将消息发送到死信队列。每个异常策略都可以自己进行处理,将其消息和/或异常转换为通用模型,然后对共享行为进行流式处理。