Получение java.net.SocketException: сброс соединения, во время выполнения вызова http4 в Apache Camel Route - PullRequest
0 голосов
/ 27 ноября 2018

Я получаю исключение ниже целевого сервера.Я мигрирую верблюжий компонент http в компонент http4.

2018-11-27 01:17:34,156 | ERROR | ernal.req.queue] | DefaultErrorHandler              | 81 - org.apache.camel.camel-core - 2.16.3 | Failed delivery for (MessageId: ID:ip-172-16-11-197-60068-1543219848548-41:1:1:1:1 on ExchangeId: ID-ip-172-16-11-197-36927-1543219848013-31-14). Exhausted after delivery attempt: 1 caught: java.net.SocketException: Connection reset

HTTP4 заголовки запроса (не рабочий поток) -

POST /GenieWebService/documentgenerator.asmx HTTP/1.1  
Connection: Keep-Alive  
Content-Length: 28955  
Content-Type: text/xml; charset=utf-8  
Accept-Encoding: gzip,deflate  
Authorization: Basic ZXNidXNlcjpwYXNzd29yZA==  
Host: xmz.ab.a.aaa(This is not actual ip)  
User-Agent: Apache-HttpClient/4.5.1 (Java/1.7.0_79)   
breadcrumbId: ID-ip-abc-ad-ac-abc-36927-15432193242455-7-90    
EXTR_SERVICE_URL: http://abs.ab.a.abc/GenieWebService/documentgenerator.xmzx  
X-Forwarded-For: 111.93.62.106, 165.225.106.106  
X-Forwarded-Port: 80  
X-Forwarded-Proto: http 

заголовки HTTP-запроса (рабочий процесс)

POST /GenieWebService/documentgenerator.asmx HTTP/1.1  
Content-Length: 66831  
Content-Type: text/xml;charset=utf-8  
Authorization: Basic ZXNidXNlcjpwYXNzd29yZA==  
Cookie: ASP.NET_SessionId=lairgud4nkaledjpuzarfqj0  
Host: abc.ab.a.abc
User-Agent: Jakarta Commons-HttpClient/3.1    
breadcrumbId: ID-ip-abc-ab-a-abc-34162-1542796372800-25-80  
EXTR_SERVICE_URL: http://abs.ab.a.abc/GenieWebService/documentgenerator.asmx   
X-Forwarded-For: 112.196.86.34, 165.225.106.89  
X-Forwarded-Port: 80  
X-Forwarded-Proto: http

Согласно моему пониманию, проблема с заголовками файлов cookie.В заголовках запросов http4 я не могу видеть заголовок cookie, пока он находится в заголовках http.Может кто-нибудь, пожалуйста, помогите здесь, в чем проблема, и если это с заголовками куки, то как я могу добавить куки.Я использую Spring DSL и Apache-Camel 2.16.3 версии.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я использовал httpClient.socketTimeout = 180000 и не использовал параметр bridgeEndpoint, поэтому верблюд будет использовать http-URL, который я устанавливаю в заголовках.Ниже мой маршрут.

<route> 
    <from uri="{{document-service.esb.new.document.internal.req.queue.name}}"/>     
    <convertBodyTo type="javax.xml.transform.dom.DOMSource" charset="utf-8"/>    
    <process ref="document-serviceHttpUrlResolver"/>      
    <removeHeaders pattern="CamelHttp*"/>    
    <removeHeaders pattern="JMS*"/>    
    <setHeader headerName="SOAPAction">    
        <xpath resultType="java.lang.String">function:properties('document-service.esb.new_genie.document.service.soap.action')</xpath>  
    </setHeader>                
    <setHeader headerName="CamelHttpUri">
        <xpath resultType="java.lang.String">in:header('EXTR_SERVICE_URL')</xpath>
    </setHeader>
    <!--CamelHttpUri value will be - http://xyz.xy.x.bcd/WebGenie/DocumentGenerator.svc-->              
    <setHeader headerName="Content-Type">
        <xpath resultType="java.lang.String">function:properties('http.content.type.value')</xpath>
    </setHeader>                                                            
    <process ref="document-serviceSoapWrapper"/>
    <log message="*** A request message sent to New Genie service: ${body}" loggingLevel="INFO" logName="document-service"/>                
    <to uri="http4://abc.ab.a.abc/GenieWebService/documentgenerator.asmx?httpClient.socketTimeout=180000"/>         
    <convertBodyTo type="javax.xml.transform.dom.DOMSource" charset="utf-8"/>               
    <to uri="{{document-service.esb.new.document.internal.resp.queue.name}}{{document-service.esb.internal.queue.parameters}}" pattern="InOnly"/>
</route>
0 голосов
/ 27 ноября 2018

Вы можете установить тайм-аут 100 мс на клиенте, указав http4: // foo? HttpClient.soTimeout = 100.Когда происходит тайм-аут, он, вероятно, выдаст исключение, которое вы можете обработать следующим образом:

onException(IOException.class).to("direct:timeouts");

from("direct:start")
.setHeader(Exchange.HTTP_QUERY,simple("format=json&count=${in.headers.count}"))
.to("http4://www.host.com/someapi?httpClient.soTimeout=100")
.unmarshal().json(JsonLibrary.JACKSON,MyResponseType.class)
.to("bean:SomeBean?method=echo");

from("direct:timeouts").to("...");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...