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
>

Reply via email to