无法在http中处理异步事件异步错误

时间:2016-05-10 05:24:46

标签: http asynchronous mule mule-component

我的mule配置中有以下流程。

<flow name="SimpleTest" processingStrategy="asynchronous">
    <http:listener path="/orders/{id}" config-ref="myRequestConfig"
        allowedMethods="GET" />
    <set-payload value="SUCCESS" />
    <flow-ref name="subFlowTest" />
    <logger level="ERROR" message="value is : after subflow" />
</flow>
<sub-flow name="subFlowTest">
    <scripting:component doc:name="sleep">
        <scripting:script engine="groovy">
            <scripting:text>
        java.lang.Thread.sleep(5000);
    </scripting:text>
        </scripting:script>

    </scripting:component>
</sub-flow>

它使Unable能够异步处理同步事件错误。我想异步调用子流,所以如果我的父流是异步的,子流将自动变为异步,正确吗?那我为什么会收到这个错误?

3 个答案:

答案 0 :(得分:2)

您可以使用异步消息处理器异步调用子流。

<async doc:name="Async">
    <flow-ref name="subFlowTest" doc:name="Call Sub Flow"/>
</async>

答案 1 :(得分:0)

HTTP端点通过它自动同步调用此流,因此您的流策略与其入站端点之间存在冲突。根据定义,HTTP是同步的。

您的问题取决于您对HTTP的理解。

希望它有所帮助。

/ T

答案 2 :(得分:0)

subflow语义更像是宏扩展而不是函数调用。您不调用子流,而是使用子流将消息处理器提取到不同的xml结构中以提高可读性。在运行时,它与复制子流的所有消息处理器并将它们放入流中的情况相同。 为什么要异步执行script组件?