Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
aws-sqs://queueName[?options]
aws-sqs://queueNameOrArn[?options] (from Camel 2.18 onwards)

The queue will be created if they don't already exists.
You can append query options to the URI in the following format, : ?options=value&option2=value&...

URI Options

messageAttributeNamesA list of message attribute names to receive when consuming. 17: Multiple names can be separated by comma. Camel 2. sqs proxyPortCamel 2.16: Specify a proxy port to be used inside the client definition

Name

Default Value

Context

Description

accessKey

null

Shared

Amazon AWS Access Key.

amazonSQSClient

null

Shared

Reference to a com.amazonaws.services.sqs.AmazonSQS in the Registry.

accessKey

null

Shared

Amazon AWS Access Key

secretKey

null

Shared

Amazon AWS Secret Key

amazonSQSEndpoint

null

Shared

The region with which the AWSthe aws-SQS sqs client wants to work with. Only works if Camel creates the AWSthe aws-SQS sqs client, i.e., if you explicitly set amazonSQSClient, then this setting will have no effect. You would have to set it on the client you create directly

attributeNames

null

Consumer

A list of attribute names to receive when consuming.

Camel 2.17: Multiple names can be separated by comma. Camel 2.16 or older: The type is a Collection so its much harder to configure and use.

nullConsumer

Camel 2.

16 or older: The type is a Collection so its much harder to configure and use.

concurrentConsumers

1Consumer(as of 2.15.0) Allows you to use multiple threads to poll the SQS queue to increase throughput. You must also set the maxMessagesPerPoll option for this to work properly.

defaultVisibilityTimeout

null

Shared

The visibility timeout (in seconds) to set in the com.amazonaws.services.sqs.model.CreateQueueRequest.

delaySeconds

null

Producer

Camel 2.9.3: Delay sending messages for a number of seconds.

deleteAfterRead

true

Consumer

Delete message from SQS after it has been read (and processed by the route).

If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the the S3Constants#BUCKET_NAME and and S3Constants#KEY headers, or only the the S3Constants#KEY header.

deleteIfFiltered

true

Consumer

Camel 2.12.2, 2.13.0: Whether or not to send the the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If '

If false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage.

maxMessagesPerPoll

null

Consumer

The maximum number of messages which can be received in one poll to set in the com.amazonaws.services.sqs.model.ReceiveMessageRequest.

visibilityTimeout

null

Shared

The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request. This only make sense if its different from defaultVisibilityTimeout.

extendMessageVisibility

false

Consumer

Camel 2.10: If enabled 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 visibilityTimeout must be set.

See details at Amazon docs.

maximumMessageSize

null

Shared

Camel 2.8: The The maximumMessageSize (in bytes) an SQS message can contain for this queue, to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest.

maxMessagesPerPoll

null

Consumer

The maximum number of messages which can be received in one poll to set in the com.amazonaws.services.sqs.model.ReceiveMessageRequest.

messageAttributeNamesnullConsumer

A list of message attribute names to receive when consuming.

Camel 2.17: Multiple names can be separated by comma.  

Camel 2.16 or older: The type is a Collection so its much harder to configure and use.

messageRetentionPeriod

null

Shared

Camel 2.8: The The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue, to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest.

policyproxyHost

nullSharedCamel 2.8: The policy for this queue to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest.16: Specify a proxy host to be used inside the client definition.

proxyPort

nullShared

delaySeconds

null

ProducerCamel 2.9.3: Delay sending messages for a number of seconds.16: Specify a proxy port to be used inside the client definition.

queueOwnerAWSAccountId

null

Shared

waitTimeSeconds

0

Producer

Camel 2.11: Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response12: Specify the queue owner aws account id when you need to connect the queue with different account owner.

policy

null

Shared

Camel 2.8: The policy for this queue to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest.

receiveMessageWaitTimeSeconds

0

Shared

Camel 2.11: If you do not specify specify WaitTimeSeconds in the request, the queue attribute attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait.

queueOwnerAWSAccountIdredrivePolicy

nullSharedCamel 2.1215: Specify the queue owner aws account id when you need to connect the queue with different account ownerpolicy that send message to DeadLetter queue. See detail at Amazon docs.

region

null

Shared

Camel 2.12.3: Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL.
Note: Region will still default to to us-east-1 if  queueOwnerAWSAccountId is not specified

redrivePolicysecretKey

null

Shared

Camel 2.15: Specify the policy that send message to DeadLetter queue. See detail at Amazon docs.

proxyHost

null

Amazon AWS Secret Key.

waitTimeSeconds

0

Producer

Shared

Camel 2.

16: Specify a proxy host to be used inside the client definition.

11: 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.

visibilityTimeout

null

Shared

The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request. This only make sense if its different from defaultVisibilityTimeout.

Info
titleRequired SQS component options

You have to provide the the amazonSQSClient in the Registry or your your accessKey and and secretKey to access the Amazon's SQS.

...

Code Block
languagejava
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
  .to("mock:result");

Dependencies

Maven users will need to add the following dependency to their pom.xml.

Code Block
xml
xml
titlepom.xml
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>

where ${camel-version} must be replaced by the actual version of Camel (2.6 or higher).

...

SQS does not allow selectors, but you can effectively achieve this by using the Camel Filter EIP and setting an appropriate visibilityTimeout. When SQS dispatches a message, it will wait up to the visibility timeout before it will try to dispatch the message to a different consumer unless a DeleteMessage is received. By default, Camel will always send the the DeleteMessage at the end of the route, unless the route ended in failure. To achieve appropriate filtering and not send the the DeleteMessage even on successful completion of the route, use a Filter:

Code Block
languagejava
from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
  .filter("${header.login} == true")
  .to("mock:result");

In the above code, if an exchange doesn't have an appropriate header, it will not make it through the filter AND also not be deleted from the SQS queue. After After 5000 miliseconds, the message will become visible to other consumers.

...