Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 连接到外部服务器时Mule http出站端点上的连接超时错误_Multithreading_Mule_Mule Component_Mule Esb - Fatal编程技术网

Multithreading 连接到外部服务器时Mule http出站端点上的连接超时错误

Multithreading 连接到外部服务器时Mule http出站端点上的连接超时错误,multithreading,mule,mule-component,mule-esb,Multithreading,Mule,Mule Component,Mule Esb,我有两个mule应用程序在一台机器上运行,其中应用程序a向应用程序B发送get请求,应用程序B连接到外部http应用程序以获取信息。基本上,应用程序B是一个重定向应用程序,它在一天内多次抛出连接超时异常(java.net.SocketTimeoutException)。根据我的观察,每当应用程序(B)空闲一段时间后,就会发生这种情况,如果它收到一个请求,它会在连接到出站http端点上的外部服务器时抛出第一个请求的连接时间,随后的请求工作正常。这种情况只发生在一个我没有调试权限的环境中,我在任何其

我有两个mule应用程序在一台机器上运行,其中应用程序a向应用程序B发送get请求,应用程序B连接到外部http应用程序以获取信息。基本上,应用程序B是一个重定向应用程序,它在一天内多次抛出连接超时异常(java.net.SocketTimeoutException)。根据我的观察,每当应用程序(B)空闲一段时间后,就会发生这种情况,如果它收到一个请求,它会在连接到出站http端点上的外部服务器时抛出第一个请求的连接时间,随后的请求工作正常。这种情况只发生在一个我没有调试权限的环境中,我在任何其他环境中都没有遇到过这个问题,尽管还有两个环境具有相同的精确设置

在调试该问题时,欢迎提供任何帮助/建议/指导。 代码


错误是`

Exception stack is:
1. connect timed out (java.net.SocketTimeoutException)
  java.net.PlainSocketImpl:-2 (null)
2. The host did not accept the connection within timeout of 2000 ms (org.apache.commons.httpclient.ConnectTimeoutException)
  org.apache.commons.httpclient.protocol.ReflectionSocketFactory:155 (null)
3. Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=http://xyz.ca.com:8080/search?param1=xyz&param2=true, connector=HttpConnector
{
  name=connector.http.mule.default
  lifecycle=start
  this=59c02565
  numberOfConcurrentTransactedReceivers=4
  createMultipleTransactedReceivers=true
  connected=true
  supportedProtocols=[http]
  serviceOverrides=<none>
}
,  name='endpoint.http.xyz.com.8080.search.param1.xyz.param2.true', mep=REQUEST_RESPONSE, properties={isActive=true, http.method=GET, exceptionOnMessageError=true, param1=xyz}, transactionConfig=Transaction{factory=null, action=INDIFFERENT, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=false}. Message payload is of type: GetMethod (org.mule.api.transport.DispatchException)
  org.mule.transport.http.HttpClientMessageDispatcher:151 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transport/DispatchException.html)`
异常堆栈是:
1.连接超时(java.net.SocketTimeoutException)
java.net.PlainSocketImpl:-2(空)
2.主机在2000毫秒的超时时间内未接受连接(org.apache.commons.httpclient.ConnectTimeoutException)
org.apache.commons.httpclient.protocol.ReflectionSocketFactory:155(空)
3.未能通过端点路由事件:DefaultOutboundEndpoint{endpointUri=http://xyz.ca.com:8080/search?param1=xyz¶m2=true,connector=HttpConnector
{
name=connector.http.mule.default
生命周期=开始
这=59c02565
ConcurrentTransacticedReceiver的数量=4
CreateMultipleTransactedReceiver=true
已连接=真
supportedProtocols=[http]
服务覆盖=
}
,name='endpoint.http.xyz.com.8080.search.param1.xyz.param2.true',mep=REQUEST\u RESPONSE,properties={isActive=true,http.method=GET,exceptionMessageError=true,param1=xyz},transactionConfig=Transaction{factory=null,action=interference,timeout=0},DeleteUnceptedMessages=false,initialState=started,responseTimeout=10000,endpointEncoding=UTF-8,disableTransportTransformer=false}。消息负载的类型为:GetMethod(org.mule.api.transport.DispatchException)
org.mule.transport.http.HttpClientMessageDispatcher:151(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transport/DispatchException.html)`
################3
在我的应用程序B中向出站http端点添加了一个直到成功的循环,如果我单独访问它,该循环将正常工作。但是,当应用程序A尝试与应用程序B通信时,甚至在应用程序B尝试连接到外部服务器并返回响应之前,应用程序A上的http出站端点正在抛出
org.mule.api.transport.DispatchException,消息为:未能通过端点路由事件:DefaultOutboundEndpoint{endpointUri=https://application-b/xyz,connector=HttpsConnector
并且当应用程序B完成重试并尝试将响应发送回应用程序A时,其获取错误:
org.mule.transport.http.HttpsMessageProcessTemplate:异常在错误后发送http响应:连接已关闭:javax.net.ssl.SSLException:java。net.SocketException:软件导致的连接中止:套接字写入错误

您需要在HTTP/HTTPS连接器上使用直到成功

<until-successful maxRetries="5" synchronous="true" doc:name="Until Successful">
            <http:request config-ref="HTTP_Request_Configuration" path="/test" method="POST" doc:name="HTTP"/>
        </until-successful>


Hi Satheesh,我执行了你的建议,但是我遇到了一些其他问题。我添加了详细信息。请看一看。Hi-KBsri当你发送回响应时,连接超时。请在应用程序a请求者中增加超时时间。感谢你的输入。但问题甚至在应用程序中的处理完成之前就出现了应用程序B、应用程序A已将调度异常(表示无法将事件路由到应用程序B)转发给请求者。我无法理解为什么应用程序A在消息实际到达应用程序B并正在处理时收到路由异常。
<until-successful maxRetries="5" synchronous="true" doc:name="Until Successful">
            <http:request config-ref="HTTP_Request_Configuration" path="/test" method="POST" doc:name="HTTP"/>
        </until-successful>