我试图从主同步流调用异步私有流,如下所示:
<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>标签中,它就可以工作.但为什么我需要这样做呢?这是一个错误吗?
这是一个功能.
您处于显式同步流中并尝试调用显式异步流.异步流的响应永远不会回到调用者流.因此,有可能丢失消息.因此,Mule强制您明确并用<async>标签包装.