我正在尝试使用异常策略并遇到以下配置。
如果我使用同步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上看到它。
答案 0 :(得分:2)
Mule是面向消息的平台,因此,根据设计,异常包含在流(不是子流)中,并作为特定的消息有效负载传播。
MEL适用于上下文对象:这里是MessageContext object API,如您所见,没有exceptionPayload
字段。