Available as of Camel 2.6
The sqs component supports sending and receiving messages to Amazon's SQS service.
Prerequisites | |
---|---|
You must have a valid Amazon Web Services developer account, and be signed up to use Amazon SQS. More information are available at Amazon SQS. |
aws-sqs://queue-name[?options]
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&...
Name | Default Value | Context | Description |
---|---|---|---|
amazonSQSClient | null
|
Shared | Reference to a com.amazonaws.services.sqs.AmazonSQSClient 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 AWS-SQS client wants to work with. |
attributeNames | null
|
Consumer | A list of attributes to set in the com.amazonaws.services.sqs.model.ReceiveMessageRequest . |
defaultVisibilityTimeout | null
|
Shared | The visibility timeout (in seconds) to set in the com.amazonaws.services.sqs.model.CreateQueueRequest . |
deleteAfterRead | true
|
Consumer | Delete message from SQS after it has been read |
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 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. |
messageVisibilityTimeout | null
|
Consumer | Camel 2.8: 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.ReceiveMessageRequest . It does NOT change the queue visibility timeout attribute permanently. |
maximumMessageSize | null
|
Shared | Camel 2.8: The maximumMessageSize (in bytes) an SQS message can contain for this queue, to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest . |
messageRetentionPeriod | null
|
Shared | Camel 2.8: The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue, to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest . |
policy | null
|
Shared | Camel 2.8: The policy for this queue to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest . |
Required SQS component options | |
---|---|
You have to provide the amazonSQSClient in the Registry or your accessKey and secretKey to access the Amazon's SQS. |
This component implements the Batch Consumer.
This allows you for instance to know how many messages exists in this batch and for instance let the Aggregator aggregate this number of messages.
Header | Type | Description |
---|---|---|
CamelAwsSqsMD5OfBody
|
String
|
The MD5 checksum of the Amazon SQS message. |
CamelAwsSqsMessageId
|
String
|
The Amazon SQS message ID. |
Header | Type | Description |
---|---|---|
CamelAwsSqsMD5OfBody
|
String
|
The MD5 checksum of the Amazon SQS message. |
CamelAwsSqsMessageId
|
String
|
The Amazon SQS message ID. |
CamelAwsSqsReceiptHandle
|
String
|
The Amazon SQS message receipt handle. |
CamelAwsSqsAttributes
|
Map<String, String>
|
The Amazon SQS message attributes. |
If your Camel Application is running behind a firewall or if you need to have more control over the AmazonSQSClient configuration, you can create your own instance:
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey"); ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setProxyHost("http://myProxyHost"); clientConfiguration.setProxyPort(8080); AmazonSQSClient client = new AmazonSQSClient(awsCredentials, clientConfiguration);
and refer to it in your Camel aws-sqs component configuration:
from("aws-sqs://MyQueue?amazonSQSClient=#amazonSQSClient&delay=5000&maxMessagesPerPoll=5") .to("mock:result");
Maven users will need to add the following dependency to their pom.xml.
pom.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).