// spring-boot-auto-configure options: START
:page-partial:
:doctitle: Camel Spring Boot Starter for aws2-sqs

== Spring Boot Auto-Configuration

When using aws2-sqs with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-aws2-sqs-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 41 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.aws2-sqs.access-key* | Amazon AWS Access Key |  | String
| *camel.component.aws2-sqs.amazon-a-w-s-host* | The hostname of the Amazon AWS cloud. | amazonaws.com | String
| *camel.component.aws2-sqs.amazon-s-q-s-client* | To use the AmazonSQS as client. The option is a software.amazon.awssdk.services.sqs.SqsClient type. |  | SqsClient
| *camel.component.aws2-sqs.attribute-names* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
| *camel.component.aws2-sqs.auto-create-queue* | Setting the autocreation of the queue | true | Boolean
| *camel.component.aws2-sqs.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean
| *camel.component.aws2-sqs.bridge-error-handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean
| *camel.component.aws2-sqs.concurrent-consumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | Integer
| *camel.component.aws2-sqs.configuration* | The AWS SQS default configuration. The option is a org.apache.camel.component.aws2.sqs.Sqs2Configuration type. |  | Sqs2Configuration
| *camel.component.aws2-sqs.default-visibility-timeout* | The default visibility timeout (in seconds) |  | Integer
| *camel.component.aws2-sqs.delay-queue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | Boolean
| *camel.component.aws2-sqs.delay-seconds* | Delay sending messages for a number of seconds. |  | Integer
| *camel.component.aws2-sqs.delete-after-read* | Delete message from SQS after it has been read | true | Boolean
| *camel.component.aws2-sqs.delete-if-filtered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | Boolean
| *camel.component.aws2-sqs.enabled* | Whether to enable auto configuration of the aws2-sqs component. This is enabled by default. |  | Boolean
| *camel.component.aws2-sqs.extend-message-visibility* | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | Boolean
| *camel.component.aws2-sqs.kms-data-key-reuse-period-seconds* | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). |  | Integer
| *camel.component.aws2-sqs.kms-master-key-id* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. |  | String
| *camel.component.aws2-sqs.lazy-start-producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | Boolean
| *camel.component.aws2-sqs.maximum-message-size* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. |  | Integer
| *camel.component.aws2-sqs.message-attribute-names* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
| *camel.component.aws2-sqs.message-deduplication-id-strategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: useExchangeId, useContentBasedDeduplication. For the useContentBasedDeduplication option, no messageDeduplicationId will be set on the message. | useExchangeId | String
| *camel.component.aws2-sqs.message-group-id-strategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: useConstant, useExchangeId, usePropertyValue. For the usePropertyValue option, the value of property CamelAwsMessageGroupId will be used. |  | String
| *camel.component.aws2-sqs.message-retention-period* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. |  | Integer
| *camel.component.aws2-sqs.operation* | The operation to do in case the user don't want to send only a message |  | Sqs2Operations
| *camel.component.aws2-sqs.policy* | The policy for this queue |  | String
| *camel.component.aws2-sqs.protocol* | The underlying protocol used to communicate with SQS | https | String
| *camel.component.aws2-sqs.proxy-host* | To define a proxy host when instantiating the SQS client |  | String
| *camel.component.aws2-sqs.proxy-port* | To define a proxy port when instantiating the SQS client |  | Integer
| *camel.component.aws2-sqs.proxy-protocol* | To define a proxy protocol when instantiating the SQS client |  | Protocol
| *camel.component.aws2-sqs.queue-owner-a-w-s-account-id* | Specify the queue owner aws account id when you need to connect the queue with different account owner. |  | String
| *camel.component.aws2-sqs.queue-url* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. |  | String
| *camel.component.aws2-sqs.receive-message-wait-time-seconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. |  | Integer
| *camel.component.aws2-sqs.redrive-policy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. |  | String
| *camel.component.aws2-sqs.region* | The region in which SQS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() |  | String
| *camel.component.aws2-sqs.secret-key* | Amazon AWS Secret Key |  | String
| *camel.component.aws2-sqs.server-side-encryption-enabled* | Define if Server Side Encryption is enabled or not on the queue | false | Boolean
| *camel.component.aws2-sqs.trust-all-certificates* | If we want to trust all certificates in case of overriding the endpoint | false | Boolean
| *camel.component.aws2-sqs.use-default-credentials-provider* | Set whether the SQS client should expect to load credentials on an AWS infra instance or to expect static credentials to be passed in. | false | Boolean
| *camel.component.aws2-sqs.visibility-timeout* | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. |  | Integer
| *camel.component.aws2-sqs.wait-time-seconds* | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. |  | Integer
|===
// spring-boot-auto-configure options: END
