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

jon*_*lee 4 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>
Run Code Online (Sandbox Code Playgroud)

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

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

这里发生了什么?

UPDATE

如果我将async flow-ref包装在<async>标签中,它就可以工作.但为什么我需要这样做呢?这是一个错误吗?

Dav*_*sot 9

这是一个功能.

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

  • FWW我将此作为评论添加,因为我不喜欢自我推销,但这种行为在第二版Mule in Action的第2章中有详细说明. (2认同)