Skip to content
AWS docs0.4

Storage and messaging

Latest stable Based on AWS release 0.4.0

Spring-facing operations wrap AWS async clients with suspend APIs and framework lifecycle. They do not remove the service’s delivery and consistency rules.

Use S3Operations for common object work and presigned URLs. Use S3TransferOperations for large or multipart transfers; it activates only when Transfer Manager is present. Treat copy-then-delete moves and presigned URL expiry as explicit application decisions.

AbstractCoroutinesDynamoDbRepository provides typed enhanced-client access. Resolve table names through DynamoDbTableNameResolver so environment naming stays outside entity code. Batch and query operations still need pagination, unprocessed-item, index, and capacity handling.

@SqsListener(
queue = "${orders.queue-url}",
maxMessages = 10,
waitTimeSeconds = 20,
visibilityTimeoutSeconds = 60,
)
suspend fun receive(order: OrderMessage) {
orderService.process(order)
}

Successful completion acknowledges according to the configured policy. On failure, visibility and redelivery rules decide the next attempt. Set processing timeout below visibility or enable an extension/heartbeat strategy.

SNS publish helpers and HTTP parsing are separate concerns. Verify SNS signatures before processing callbacks. SES senders expose coroutine and JavaMail-style adapters; do not retry non-idempotent sends blindly.

Test serialization, queue lookup, redelivery, duplicate delivery, DLQ behavior, S3 pagination, multipart cancellation, and DynamoDB partial batch success. A successful send-only test is insufficient.