Mule处理策略 - 从同步流调用异步私有流

时间:2014-02-24 20:45:23

标签: mule

我试图从主同步流中调用异步私有流,如下所示:

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

    <flow-ref name="async-private" />
    <flow-ref name="private" />

</flow>
<flow name="private" processingStrategy="synchronous">
    <logger level="ERROR" message="sync" />
</flow>

<flow name="async-private" processingStrategy="asynchronous">
    <logger level="ERROR" message="async" />
</flow>

但它不起作用并导致以下异常:

无法异步处理同步事件。消息有效内容的类型为:String(org.mule.api.MessagingException)

这里发生了什么?

更新

如果我在<async>标记中包装async flow-ref,它会起作用。但为什么我需要这样做呢?这是一个错误吗?

1 个答案:

答案 0 :(得分:9)

这是一个功能。

您处于显式同步流中并尝试调用显式异步流。异步流的响应永远不会回到调用者流。因此,有可能丢失消息。因此,Mule强制您明确并使用<async>标记进行换行。