Amazon Simple Queue Service メッセージを送信、受信、および削除する - AWS SDK for Java 2.x

Amazon Simple Queue Service メッセージを送信、受信、および削除する

メッセージは、分散コンポーネントによって送受信できるデータの一部です。メッセージは、常に SQS キューを使用して提供されます。

次の例で使用されている sqsClient 変数は、次のスニペットから作成できます。

SqsClient sqsClient = SqsClient.create();

静的 create() メソッドを使用して SqsClient を作成すると、SDK はデフォルトのリージョンプロバイダーチェーンによってリージョンを設定し、デフォルトの認証情報プロバイダーチェーンによって認証情報を設定します。

メッセージの送信

Amazon Simple Queue Service キューに 1 つのメッセージ追加するには、SqsClient クライアントの sendMessage メソッドを呼び出します。キューの URL、メッセージ本文、およびオプションの遅延値 (秒単位) が含まれる SendMessageRequest オブジェクトを指定します。

インポート

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10) .build()); sqsClient.sendMessage(sendMsgRequest);

リクエストで複数のメッセージを送信する

SqsClient の sendMessageBatch メソッドを使用して 1 つのリクエストで複数のメッセージを送信します。このメソッドは、キューの URL と送信するメッセージのリストを含む SendMessageBatchRequest を受け取ります (各メッセージは SendMessageBatchRequestEntry)。また、メッセージの遅延値を設定して、特定のメッセージの送信を遅延させることもできます。

インポート

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder() .queueUrl(queueUrl) .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(), SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build()) .build(); sqsClient.sendMessageBatch(sendMessageBatchRequest);

GitHub の「完全なサンプル」をご覧ください。

メッセージを取得する

キューに現在含まれているメッセージを取得するには、SqsClient の receiveMessage メソッドを呼び出します。このメソッドは、キュー URL を含む ReceiveMessageRequest を受け取ります。また、返るメッセージの最大数を指定することもできます。メッセージは、Message オブジェクトのリストとして返されます。

インポート

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

try { ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build(); List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages(); return messages; } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null;

GitHub の「完全なサンプル」をご覧ください。

受信後にメッセージを削除する

メッセージを受信し、その内容を処理した後で、メッセージをキューから削除するには、メッセージの受信ハンドルとキュー URL を SqsClient's deleteMessage メソッドに送信します。

インポート

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

try { for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); }

GitHub の「完全なサンプル」をご覧ください。

詳細