You could create your own client instance and reference it in your route.

So you will be able to manage timeout and what not

Il mer 12 apr 2023, 16:51 Vyacheslav Boyko <mail4...@gmail.com> ha scritto:

> Hi!
>
> Please help me to solve a problem.
> It worked properly on Apache Camel 3.20.1 (Java 11) and fails with
> timeout after I upgrade it onto 3.20.3 (Java 17).
> I run my app on SpringBoot.
>
> I have a service with the route which just uploads files onto AWS S3.
>
> from("direct:save-s3")
> .routeId("save-s3")
> .messageHistory()
> .onException(SdkException.class)
> .maximumRedeliveries(AWS_S3_MAXIMUM_REDELIVERIES)
> .redeliveryDelay(AWS_S3_REDELIVERY_DELAY_MS)
> .handled(false)
> .end()
> .process(exchange -> exchange.setProperty(DOCUMENT_PREVIEW_ID,
> PREVIEW_PREFIX +
> exchange.getIn().getBody(DocumentDto.class).getDocumentId()))
> .log(INFO, "Save preview ${exchangeProperty[" + DOCUMENT_PREVIEW_ID +
> "]}")
> .process((exchange) -> {
> DocumentDto documentDto = exchange.getIn().getBody(DocumentDto.class);
> exchange.getIn().setHeader(AWS2S3Constants.KEY,
> exchange.getProperty(DOCUMENT_PREVIEW_ID));
> String preview =
> Base64.getEncoder().encodeToString(imageService.getPreview(documentDto.
> getDocumentContent()));
> exchange.getIn().setBody(preview);
> })
> .to("aws2-
> s3://BUCKET?accessKey=RAW(SOME_KEY)&secretKey=RAW(SOME_KEY)&region=REGI
> ON");
>
> Here is my stacktrace:
>
> software.amazon.awssdk.core.exception.SdkClientException: Unable to
> execute HTTP request: Connect to pfe-clientfiles-qa.s3.eu-north-
> 1.amazonaws.com:443 [pfe-clientfiles-qa.s3.eu-north-
> 1.amazonaws.com/52.95.170.64] failed: Connect timed out
> at
> software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.bu
> ild(SdkClientException.java:111)
> at
> software.amazon.awssdk.core.exception.SdkClientException.create(SdkClie
> ntException.java:47)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.utils.Retryab
> leStageHelper.setLastException(RetryableStageHelper.java:223)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStag
> e.execute(RetryableStage.java:83)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStag
> e.execute(RetryableStage.java:36)
> at
> software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuild
> er$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:20
> 6)
> at
> software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(S
> treamManagingStage.java:56)
> at
> software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(S
> treamManagingStage.java:36)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeou
> tTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeou
> tTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeou
> tTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetric
> CollectionStage.execute(ApiCallMetricCollectionStage.java:48)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetric
> CollectionStage.execute(ApiCallMetricCollectionStage.java:31)
> at
> software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuild
> er$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:20
> 6)
> at
> software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuild
> er$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:20
> 6)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFail
> ureExceptionReportingStage.execute(ExecutionFailureExceptionReportingSt
> age.java:37)
> at
> software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFail
> ureExceptionReportingStage.execute(ExecutionFailureExceptionReportingSt
> age.java:26)
> at
> software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestE
> xecutionBuilderImpl.execute(AmazonSyncHttpClient.java:193)
> at
> software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invo
> ke(BaseSyncClientHandler.java:103)
> at
> software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doEx
> ecute(BaseSyncClientHandler.java:171)
> at
> software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lamb
> da$execute$1(BaseSyncClientHandler.java:82)
> at
> software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.meas
> ureApiCallSuccess(BaseSyncClientHandler.java:179)
> at
> software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.exec
> ute(BaseSyncClientHandler.java:76)
> at
> software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute
> (SdkSyncClientHandler.java:45)
> at
> software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.exec
> ute(AwsSyncClientHandler.java:56)
> at
> software.amazon.awssdk.services.s3.DefaultS3Client.putObject(DefaultS3C
> lient.java:9326)
> at
> org.apache.camel.component.aws2.s3.AWS2S3Producer.doPutObject(AWS2S3Pro
> ducer.java:393)
> at
> org.apache.camel.component.aws2.s3.AWS2S3Producer.processSingleOp(AWS2S
> 3Producer.java:296)
> at
> org.apache.camel.component.aws2.s3.AWS2S3Producer.process(AWS2S3Produce
> r.java:97)
> at
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsync
> ProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
> at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172
> )
> at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$Redelive
> ryTask.redeliver(RedeliveryErrorHandler.java:893)
> at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(De
> faultReactiveExecutor.java:181)
> at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(Defau
> ltReactiveExecutor.java:59)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:165)
> at
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelIntern
> alProcessor.java:392)
> at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(
> DefaultAsyncProcessorAwaitManager.java:83)
> at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSu
> pport.java:41)
> at
> org.apache.camel.component.kafka.consumer.support.KafkaRecordProcessor.
> processExchange(KafkaRecordProcessor.java:110)
> at
> org.apache.camel.component.kafka.consumer.support.KafkaRecordProcessorF
> acade.processRecord(KafkaRecordProcessorFacade.java:125)
> at
> org.apache.camel.component.kafka.consumer.support.KafkaRecordProcessorF
> acade.processPolledRecords(KafkaRecordProcessorFacade.java:78)
> at
> org.apache.camel.component.kafka.KafkaFetchRecords.startPolling(KafkaFe
> tchRecords.java:328)
> at
> org.apache.camel.component.kafka.KafkaFetchRecords.run(KafkaFetchRecord
> s.java:160)
> at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> Source)
> at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
> 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)
>
> AWS2-S3 component does not have a parameter to adjust timeout.
>
> What do I do?
>

Reply via email to