我试图从主同步流中调用异步私有流,如下所示:
<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,它会起作用。但为什么我需要这样做呢?这是一个错误吗?
答案 0 :(得分:9)
这是一个功能。
您处于显式同步流中并尝试调用显式异步流。异步流的响应永远不会回到调用者流。因此,有可能丢失消息。因此,Mule强制您明确并使用<async>
标记进行换行。