Mule - 跨同步VM端点的异常策略传播

时间:2014-03-11 18:38:50

标签: mule

我正在尝试使用异常策略并遇到以下配置。

如果我使用同步vm端点从另一个流调用一个流,并且不捕获被调用者流中的异常。调用者流异常策略不会被调用,而是被调用者流添加了exceptionPayload。

我认为如果有一个exceptionPayload,调用者流异常策略将被调用。但它并没有。这是一个功能还是一个错误?

<flow name="main" doc:name="main">
        <poll frequency="60000">
            <set-payload value="main"></set-payload>
        </poll>

        <vm:outbound-endpoint address="vm://private" exchange-pattern="request-response" />
        <logger level="ERROR" message="After private #[exception]" />

        <catch-exception-strategy>
            <logger level="ERROR" message="Exception caught in parent." />
        </catch-exception-strategy>
    </flow>

    <flow name="private">
        <vm:inbound-endpoint address="vm://private" exchange-pattern="request-response" />
        <logger level="ERROR" message="private" />
        <null-component></null-component>
    </flow>

此外,我可以使用#[exception]通过MEL访问exceptionPayload,但不能通过#[message.exceptionPayload]访问。有没有理由不能在Mule中以这种方式访问​​它?我可以在DefaultMuleMessage上看到它。

1 个答案:

答案 0 :(得分:2)

Mule是面向消息的平台,因此,根据设计,异常包含在流(不是子流)中,并作为特定的消息有效负载传播。

MEL适用于上下文对象:这里是MessageContext object API,如您所见,没有exceptionPayload字段。