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