直到成功的超时错误

时间:2013-10-30 21:40:23

标签: mule mule-studio timeoutexception

我们有一个流程,我们已经实现了一个soap客户端来向服务提供商发送soap消息。

如果失败,我们需要重试服务调用3次。所以我们在内部使用HTTP Outbound Endpoint直到成功范围。

正在按预期进行重试,但是在成功的情况下,即使我们从服务获得响应,我们也会观察到超时错误,如下所示。

  

[DispatchThread:1] org.apache.cxf.endpoint.ClientImpl:等待响应操作{http://support.cxf.module.mule.org/}调用超时。

观察:

我已经删除了直到成功并直接拥有HTTP Outbound端点,在这种情况下没有超时错误。

我后来尝试过,直到成功并有一个承认表达式接受回复,仍然同时响应。

  

failureExpression =“#[message.inboundProperties ['http.status']!= 200]”ackExpression =“#[message.correlationId]”

任何人都可以建议,如何配置成功接受响应,而不是浪费时间错误。

2 个答案:

答案 0 :(得分:2)

ackExpression与“接受响应”无关,它用于生成在流已将当前事件传递给until-successful消息后将用作新消息有效内容的值处理器。

尝试在出站HTTP端点上设置response-timeout以查看它是否有帮助:可能在until-successful范围的上下文中使用的默认超时太大并且会产生此问题。

答案 1 :(得分:1)

我找到了解决方案。

之前我在Until-Successful中只有HttpOutbound端点,我正面临Timeout问题。

现在我将Soap组件也包含在直到成功的范围内,它工作正常。

由于直到成功允许我们只有一个组件,我已经包装了soap组件,而HttpOutbound端点是一个处理器链。

   <until-successful objectStore-ref="objectStore"
            maxRetries="3" secondsBetweenRetries="2" deadLetterQueue-ref="xxxx"
            doc:name="UntilSuccessfulService"  >                
            <processor-chain doc:name="Processor Chain">
                <cxf:jaxws-client operation="Request1" serviceClass="xxxxxxx" enableMuleSoapHeaders="true" doc:name="SOAP"/>
               <http:outbound-endpoint exchange-pattern="request-response" method="POST"  doc:name="HTTP" host="localhost" path="cService" port="xxxx" connector-ref="HTTP_HTTPS"/>                   
           </processor-chain>                
    </until-successful> 

感谢大卫和所有人的回复。