[ 
https://issues.apache.org/jira/browse/CAMEL-16287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17571793#comment-17571793
 ] 

George Ladutsko commented on CAMEL-16287:
-----------------------------------------

Unfortunately, after fix (3.14.4) an application throws an exception:


{panel:title=Exception}
Caused by: software.amazon.awssdk.services.sqs.model.SqsException: MaxResults 
is a mandatory parameter when you provide a value for NextToken. (Service: Sqs, 
Status Code: 400, Request ID: 8653ea4e-3dfb-5ea6-89fc-b114d624928d)
    at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleErrorResponse(CombinedResponseHandler.java:125)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleResponse(CombinedResponseHandler.java:82)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:60)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:41)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:40)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:30)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:73)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:78)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:40)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:50)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:36)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:81)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:56)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:36)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:48)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:31)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:193)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:167)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:82)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:175)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:76)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
 ~[sdk-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:56)
 ~[aws-core-2.17.174.jar:na]
    at 
software.amazon.awssdk.services.sqs.DefaultSqsClient.listQueues(DefaultSqsClient.java:1126)
 ~[sqs-2.17.99.jar:na]
    at 
org.apache.camel.component.aws2.sqs.Sqs2Endpoint.doInit(Sqs2Endpoint.java:185) 
~[camel-aws2-sqs-3.14.4.jar:3.14.4] *<=== THE PROBLEM IS HERE*
    at org.apache.camel.support.service.BaseService.init(BaseService.java:83) 
~[camel-api-3.14.4.jar:3.14.4]
    at 
org.apache.camel.support.service.ServiceHelper.initService(ServiceHelper.java:84)
 ~[camel-api-3.14.4.jar:3.14.4]
    at 
org.apache.camel.impl.engine.AbstractCamelContext.internalAddService(AbstractCamelContext.java:1530)
 ~[camel-base-engine-3.14.4.jar:3.14.4]
    at 
org.apache.camel.impl.engine.AbstractCamelContext.addService(AbstractCamelContext.java:1475)
 ~[camel-base-engine-3.14.4.jar:3.14.4]
    at 
org.apache.camel.impl.engine.AbstractCamelContext.addService(AbstractCamelContext.java:1470)
 ~[camel-base-engine-3.14.4.jar:3.14.4]
    at 
org.apache.camel.impl.engine.AbstractCamelContext.addService(AbstractCamelContext.java:1465)
 ~[camel-base-engine-3.14.4.jar:3.14.4]
    at 
org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:952)
 ~[camel-base-engine-3.14.4.jar:3.14.4]
    ... 44 common frames omitted
{panel}

> camel-aws2-sqs should use pagination for deciding which aws sqs queues it 
> should create
> ---------------------------------------------------------------------------------------
>
>                 Key: CAMEL-16287
>                 URL: https://issues.apache.org/jira/browse/CAMEL-16287
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 2.25.3, 3.8.0
>            Reporter: Gyorgy Abraham
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 3.14.4, 3.18.0
>
>
> There is an auto create queue feature for aws-sqs in camel-sqs component. 
> Upon camel context creation / route building, it issues an API call to list 
> all sqs queues, so it skips the creation for already existing ones. If camel 
> context has a for example consumer route for an sqs queue that is not listed 
> in the response of this API call, camel will try to to create it.
> However, this API only lists the first 1000 queues in the current account. If 
> there are more then 1000 queues, camel-sqs will try to create a new one, and 
> might fail. In our company's account, we have 1442 queues in our account and 
> Camel tried to create a .fifo queue because it thought it wasnt already 
> existing, resulting in application startup error.
> Relevant code: 
> [https://github.com/apache/camel/blob/master/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Endpoint.java#L174]
> Relevant API docs at AWS: 
> [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQS.html#listQueues-com.amazonaws.services.sqs.model.ListQueuesRequest-]
> Solution is straightforward: use pagination and load all queues.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to