Mule 在成功之前发生超时错误

Mule 在成功之前发生超时错误,mule,mule-studio,timeoutexception,Mule,Mule Studio,Timeoutexception,我们有一个流程,在这个流程中,我们实现了一个soap客户机来向服务提供者发送soap消息 如果服务调用失败,我们需要重试3次。所以我们在范围内使用了HTTP出站端点,直到成功 它正在按预期进行重试,但在成功的情况下,即使我们从服务获得响应,我们也会观察到一个超时错误,如下所示 [DispatchThread:1]org.apache.cxf.endpoint.ClientImpl:等待对操作{}调用的响应时超时 观察: 我已经成功地删除了,并且直接使用了HTTP出站端点,在这种情况下没有超时错误

我们有一个流程,在这个流程中,我们实现了一个soap客户机来向服务提供者发送soap消息

如果服务调用失败,我们需要重试3次。所以我们在范围内使用了HTTP出站端点,直到成功

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

[DispatchThread:1]org.apache.cxf.endpoint.ClientImpl:等待对操作{}调用的响应时超时

观察:

我已经成功地删除了,并且直接使用了HTTP出站端点,在这种情况下没有超时错误

后来我尝试了,直到成功,并且有了一个确认表达式来接受响应,仍然是相同的超时响应

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


请任何人提出建议,如何配置直到成功接受响应而不抛出超时错误。

ackExpression与“接受响应”无关,它用于在流将当前事件传递到
消息处理器后生成一个值,该值将用作新的消息有效负载,直到成功


尝试在出站HTTP端点上设置一个
响应超时
,看看是否有帮助:可能是在
上下文中使用的默认超时,直到成功
范围太大,导致了这个问题。

我找到了解决方案

早些时候,我只有HttpOutbound端点在里面,直到成功,我面临超时问题

现在我将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> 


感谢David和所有人的回复。

请添加您的流量配置。感谢David,我们已尝试减少超时时间,它有时工作,有时抛出错误,没有一致的行为。我们是否有任何标准或计算来设置响应超时?这不符合逻辑,您能否尝试在HTTP出站端点上添加
keep alive=“false”
?还可以尝试在HTTP连接器上添加
keepSendSocketOpen=“false”
。正如我所提到的,我观察到这个问题,只有当我们在内部有HTTP出站端点直到成功,否则它工作正常。但在成功之前,我们需要重试连接失败的尝试。