从 SQS 接收 messages/events 并将它们映射到 Dynamodb

Receive messages/events from SQS and map them to Dynamodb

我正在尝试找到一种方法来读取我的 SQS 事件并使用 Java 将它们映射到 DynamoDB。我在 AWS 中有一个 SQS,它会收到一些包含一些信息的消息,例如{"id": "xxx", "state": "xxx"}。我想将这些事件映射到我的 DynamoDB table。 DynamoDB 包含 id 作为分区键。 根据我的研究,这可以通过从 sqs 读取消息并在 JAVA 中使用来自 AWS DynamoDB 的 putItem 来实现。 使用 JAVA 有什么简单的方法吗?或者任何示例在这里都会有所帮助。

谢谢!

对于 AWS,有一个 JAVA SDK 2.0 专门为此设计:

从 SQS 队列接收消息的一般示例:

    ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder()
        .queueUrl(queueUrl)
        .maxNumberOfMessages(5)
        .build();
    List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages();

https://github.com/awsdocs/aws-doc-sdk-examples/blob/fb99a9b5453c61c13a032b9c225986c865ba4705/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L152


将项目放入 DynamoDB 的一般示例:

 HashMap<String,AttributeValue> itemValues = new HashMap<String,AttributeValue>();

// Add all content to the table
itemValues.put(key, AttributeValue.builder().s(keyVal).build());
itemValues.put(songTitle, AttributeValue.builder().s(songTitleVal).build());
itemValues.put(albumTitle, AttributeValue.builder().s(albumTitleValue).build());
itemValues.put(awards, AttributeValue.builder().s(awardVal).build());

PutItemRequest request = PutItemRequest.builder()
        .tableName(tableName)
        .item(itemValues)
        .build();

ddb.putItem(request);
System.out.println(tableName +" was successfully updated");

https://github.com/awsdocs/aws-doc-sdk-examples/blob/fb99a9b5453c61c13a032b9c225986c865ba4705/javav2/example_code/dynamodb/src/main/java/com/example/dynamodb/PutItem.java#L84

AWS 文档非常出色,其示例也是如此:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/fb99a9b5453c61c13a032b9c225986c865ba4705/javav2

官方文档:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/prog-services.html