超时配置

时间:2019-05-08 20:15:58

标签: mule

我正在为Mule 4中的API配置事务和响应超时,是否为Mule Soft中的单个API的不同方法(GET,POST,DELETE)设置了不同的超时时间,因为该API对于不同的操作具有不同的SLA?

1 个答案:

答案 0 :(得分:0)

由于http超时是在连接器级别设置的,因此不允许您为每种方法设置超时。

您可以尝试实现此目的的一种方法是通过将接口流与逻辑分离。然后让您的接口流通过诸如vm之类的逻辑流来调用您的逻辑流,您可以分别设置超时时间。然后,您可以捕获超时错误并执行所需的操作。

这是一个具有POST方法流程的示例。所有这些流程所要做的就是将逻辑卸载到另一块浮点,并使用v:publish-consume调用该逻辑并等待响应。它将超时设置为2秒(可使用属性等进行配置),并捕获VM:QUEUE-TIMEOUT错误并设置“超出SLA”错误消息:

     <flow name="myPOSTInterface">
        <vm:publish-consume queueName="postQueue" config-ref="vm" timeout="2" timeoutUnit="SECONDS" />

        <logger level="INFO" message="Result from logic flow: #[payload]" />

        <error-handler>
            <on-error-continue type="VM:QUEUE_TIMEOUT">
                <set-payload value="#[{error: 'SLA exceeded'}]" />
            </on-error-continue>
        </error-handler>
    </flow>

    <flow name="myPOSTLogic">
        <vm:listener config-ref="vm" queueName="postQueue" />
        <set-payload value="#[{result: 'Result from my logic'}]" />
    </flow>