Skip to content

Commit da4b734

Browse files
authored
Add docs for Spring Integration DynamoDB support (#1472)
1 parent bb76621 commit da4b734

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

docs/src/main/asciidoc/dynamodb.adoc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,3 +186,31 @@ Note that `DynamoDbClientCustomizer` beans are applied **after** `AwsSyncClientC
186186

187187
Since it depends on how you will use DynamoDb integration providing a list of IAM policies would be pointless since least privilege model should be used.
188188
To check what IAM policies DynamoDb uses and see which ones you should use please check https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html[IAM policies]
189+
190+
=== Spring Integration Support
191+
192+
Starting with version 4.0, Spring Cloud AWS provides https://spring.io/projects/spring-integration[Spring Integration] components for Amazon DynamoDB.
193+
194+
The `DynamoDbMetadataStore` is a https://docs.spring.io/spring-integration/reference/meta-data-store.html[`ConcurrentMetadataStore`] implementation to store and retrieve key-value entries in the specific DynamoDB.
195+
It requires a `DynamoDbAsyncClient` and default table name is `SpringIntegrationMetadataStore`.
196+
If the table is not present, the `DynamoDbMetadataStore` creates it on its initialization issuing an async `dynamoDB.createTable()` request.
197+
The table structure is like:
198+
199+
- the `metadataKey` is a string table key as a hash;
200+
- the `metadataValue` is a string for entry value;
201+
- the `expireAt` is time-to-live attribute according to respective algorithm in DynamoDB.
202+
203+
See `DynamoDbMetadataStore` Javadocs for more information.
204+
205+
The `DynamoDbLockRegistry` is an `ExpirableLockRegistry` and `RenewableLockRegistry` implementation for the https://docs.spring.io/spring-integration/reference/distributed-locks.html[`DistributedLock`] abstraction based on DynamoDB table.
206+
The supporting `DynamoDbLockRepository` class is for DynamoDB table management and low-level DynamoDB API interaction.
207+
It requires a `DynamoDbAsyncClient`, and the default table name is `SpringIntegrationLockRegistry`.
208+
209+
The table structure is like:
210+
211+
- the `lockKey` is a string table key as a hash;
212+
- the `lockOwner` is a string for lock record ownership — the instance which holds the lock at the moment;
213+
- the `createdAt` is an `Instant.now().getEpochSecond()` when the lock record was created;
214+
- the `expireAt` is time-to-live attribute according to respective algorithm in DynamoDB.
215+
216+
See `DynamoDbLockRegistry` and `DynamoDbLockRepository` Javadocs for more information.

0 commit comments

Comments
 (0)