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
インポート
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
インポート
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 の「完全なサンプル
詳細
-
Amazon Simple Queue Service デベロッパーガイドの Amazon Simple Queue Service キューの仕組み
-
Amazon Simple Queue Service API リファレンスの SendMessage
-
Amazon Simple Queue Service API リファレンスの SendMessageBatch
-
Amazon Simple Queue Service API リファレンスの ReceiveMessage
-
Amazon Simple Queue Service API リファレンスの DeleteMessage