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)®ion=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? >