No problem, such thing happen If possible, you may try to simplify the Camel route. Something like this (pseudocode):
from("seda://notification-pool?concurrentConsumers=500") .setHeader(Exchange.CONTENT_TYPE).constant("application/json") .setProperty("WEBHOOK_URL", getWebhookUrl(exchange)) .setHeader("RECIPIENTS").simple("${header.WEBHOOK_URL}?exchangePattern=InOut&connectTimeout=30&connectionRequestTimeout=30&httpMethod=POST") .log("RECIPIENT LIST: " + header.RECIPIENTS))) .recipientList(header(Constants.RECIPIENTS)); or put the logic in a separate processor: from("seda://notification-pool?concurrentConsumers=500") .process(new CreateRecipientsProcessor()) .recipientList(header(Constants.RECIPIENTS)); Raymond On Wed, Oct 26, 2022 at 2:19 PM Vyacheslav Boyko <mail4...@gmail.com> wrote: > My bad, timeouts were the cause. > > 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 >