Camel version 3.15.0
On 10/26/22 14:48, Vyacheslav Boyko wrote:
Hello.
Please help to understand why does the exception occur?
My rout could be simplified to
from("seda://notification-pool?concurrentConsumers=500")
.process(exchange -> exchange.setProperty(WEBHOOK_URL, getWebhookUrl(exchange)))
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.process(exchange ->
exchange.getIn().setHeader(Constants.RECIPIENTS,
Collections.singleton(format("%s?exchangePattern=InOut&connectTimeout=30&connectionRequestTimeout=30",
exchange.getProperty(WEBHOOK_URL)))))
.process(exchange ->log.info("RECIPIENT LIST: " +
exchange.getIn().getHeader(Constants.RECIPIENTS)))
.recipientList(header(Constants.RECIPIENTS))
And I have an exception:
java.net.SocketTimeoutException: Read timed out
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(Unknown Source)
at java.base/java.net.SocketInputStream.read(Unknown Source)
at java.base/java.net.SocketInputStream.read(Unknown Source)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(Unknown
Source)
at
java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(Unknown Source)
at
java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(Unknown
Source)
at
java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(Unknown
Source)
at
java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(Unknown
Source)
at
org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
at
org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
at
org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
at
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
at
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at
org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at
org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at
org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
at
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at
org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at
org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at
org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at
org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
at
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
at
org.apache.camel.component.http.HttpProducer.executeMethod(HttpProducer.java:447)
at
org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:275)
at
org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:812)
at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:720)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:187)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
at
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:399)
at
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:269)
at
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:187)
at
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:130)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
Source)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source)
at java.base/java.lang.Thread.run(Unknown Source)
The log is:
RECIPIENT LIST:
[https://test.my-domain.com/pushNotificationPayment?exchangePattern=InOut&connectTimeout=30&connectionRequestTimeout=30]
The fact is webhook is being delivered successfully despite of having
this exception.
And when I use CURL to check webhook URL on data acceptance, it
returns meaningful body. Seems only Camel could not read the answer.
Why?
--
Vyacheslav Boyko
mailto:mail4...@gmail.com
--
Vyacheslav Boyko
mailto:mail4...@gmail.com