Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h2. SDB Component
*Available as of Camel 2.8.4*

The sdb component supports storing and retrieving data from/to [Amazon's SDB|http://aws.amazon.com/sdb] service.

{info:title=Prerequisites}
You must have a valid Amazon Web Services developer account, and be signed up to use Amazon SDB. More information are available at [Amazon SDB|http://aws.amazon.com/sdb].
{info}

h3. URI Format
{code}
aws-sdb://domainName[?options]
{code}
You can append query options to the URI in the following format, ?options=value&option2=value&...

h3. URI Options
|| Name || Default Value || Context || Description ||
|amazonSDBClient | {{null}} | Producer | Reference to a {{com.amazonaws.services.simpledb.AmazonSimpleDB}} in the [Registry]. |
|accessKey | {{null}} | Producer | Amazon AWS Access Key |
|secretKey | {{null}} | Producer | Amazon AWS Secret Key |
|amazonSdbEndpoint | {{null}} | Producer | The region with which the AWS-SDB client wants to work with. |
|domainName | {{null}} | Producer | The name of the domain currently worked with. |
|maxNumberOfDomains | {{100}} | Producer | The maximum number of domain names you want returned. The range is 1 * to 100. |
|consistentRead | {{false}} | Producer | Determines whether or not strong consistency should be enforced when data is read.|
|operation| {{PutAttributes}} | Producer | Valid values are BatchDeleteAttributes, BatchPutAttributes, DeleteAttributes, DeleteDomain, DomainMetadata, GetAttributes, ListDomains, PutAttributes, Select.|

{info:title=Required SDB component options}
You have to provide the amazonSDBClient in the [Registry] or your accessKey and secretKey to access the [Amazon's SDB|http://aws.amazon.com/sdb].
{info}

h3. Usage
h4. Message headers evaluated by the SDB producer
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelAwsSdbAttributes}} | {{Collection<Attribute>}} | List of attributes to be acted upon. |
| {{CamelAwsSdbAttributeNames}} | {{Collection<String>}} | The names of the attributes to be retrieved. |
| {{CamelAwsSdbConsistentRead}} | {{Boolean}} | Determines whether or not strong consistency should be enforced when data is read. |
| {{CamelAwsSdbDeletableItems}} | {{Collection<DeletableItem>}} | A list of items on which to perform the delete operation in a batch. |
| {{CamelAwsSdbDomainName}} | {{String}} | The name of the domain currently worked with. |
| {{CamelAwsSdbItemName}} | {{String}} | The unique key for this item |
| {{CamelAwsSdbMaxNumberOfDomains}} | {{Integer}} | The maximum number of domain names you want returned. The range is 1 * to 100. |
| {{CamelAwsSdbNextToken}} | {{String}} | A string specifying where to start the next list of domain/item names. |
| {{CamelAwsSdbOperation}} | {{String}} | To override the operation from the URI options. |
| {{CamelAwsSdbReplaceableAttributes}} | {{Collection<ReplaceableAttribute>}} | List of attributes to put in an Item. |
| {{CamelAwsSdbReplaceableItems}} | {{Collection<ReplaceableItem>}} | A list of items to put in a Domain. |
| {{CamelAwsSdbSelectExpression}} | {{String}} | The expression used to query the domain. |
| {{CamelAwsSdbUpdateCondition}} | {{String}} | The update condition which, if specified, determines whether the specified attributes will be updated/deleted or not. |
{div}

h4. Message headers set during DomainMetadata operation
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelAwsSdbTimestamp}} | {{Integer}} | The data and time when metadata was calculated, in Epoch (UNIX) seconds. |
| {{CamelAwsSdbItemCount}} | {{Integer}} | The number of all items in the domain. |
| {{CamelAwsSdbAttributeNameCount}} | {{Integer}} | The number of unique attribute names in the domain. |
| {{CamelAwsSdbAttributeValueCount}} | {{Integer}} | The number of all attribute name/value pairs in the domain. |
| {{CamelAwsSdbAttributeNameSize}} | {{Long}} | The total size of all unique attribute names in the domain, in bytes. |
| {{CamelAwsSdbAttributeValueSize}} | {{Long}} | The total size of all attribute values in the domain, in bytes. |
| {{CamelAwsSdbItemNameSize}} | {{Long}} | The total size of all item names in the domain, in bytes. |
{div}

h4. Message headers set during GetAttributes operation
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelAwsSdbAttributes}} | {{List<Attribute>}} | The list of attributes returned by the operation. |
{div}

h4. Message headers set during ListDomains operation
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelAwsSdbDomainNames}} | {{List<String>}} | A list of domain names that match the expression. |
| {{CamelAwsSdbNextToken}} | {{String}} | An opaque token indicating that there are more domains than the specified MaxNumberOfDomains still available. |
{div}

h4. Message headers set during Select operation
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelAwsSdbItems}} | {{List<Item>}} | A list of items that match the select expression. |
| {{CamelAwsSdbNextToken}} | {{String}} | An opaque token indicating that more items than MaxNumberOfItems were matched, the response size exceeded 1 megabyte, or the execution time exceeded 5 seconds. |
{div}

h4. Advanced AmazonSimpleDBClientAmazonSimpleDB configuration
If you need more control over the {{AmazonSimpleDBClientAmazonSimpleDB}} instance configuration you can create your own instance and refer to it from the URI:
{code}
from("direct:start")
.to("aws-sdb://domainName?amazonSDBClient=#amazonSDBClient#client");
{code}
The {{#amazonSDBClient#client}} refers to a {{AmazonSimpleDBClientAmazonSimpleDB}} in the [Registry].

For example if your Camel Application is running behind a firewall:
{code}
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonSimpleDBClientAmazonSimpleDB amazonSDBClientclient = new AmazonSimpleDBClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
{code}

h3. Dependencies
Maven users will need to add the following dependency to their pom.xml.
{code:xml|title=pom.xml}
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
{code}

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

{include:Endpoint See Also}
- [AWS Component|AWS]