AWS SDK for Java (v1) の近日発表
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS で可視性タイムアウトを設定する
Amazon SQS でメッセージを受信すると、受信確認のために、削除されるまでキューに残ります。削除されなかった受信メッセージは、指定された可視性タイムアウトの後に以降のリクエストで使用でき、メッセージが処理および削除される前に複数回受信することを防ぎます。
注記
標準キューを使用している場合、可視性タイムアウトはメッセージを 2 回受信しない保証にはなりません。標準キューを使用している場合は、同じメッセージが複数回配信されるケースをコードが処理できることを確認してください。
単一のメッセージのメッセージ可視性タイムアウトを設定する
メッセージを受信したとき、渡したい ChangeMessageVisibilityRequest の受信ハンドルを AmazonSQS クラスの changeMessageVisibility
メソッドに渡すことで、可視性タイムアウトを変更することができます。
インポート
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
Code
AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Get the receipt handle for the first message in the queue. String receipt = sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle(); sqs.changeMessageVisibility(queue_url, receipt, timeout);
GitHub
複数のメッセージのメッセージ可視性タイムアウトを同時に設定する
複数のメッセージのメッセージ可視性タイムアウトを設定するには、それぞれに一意の ID 文字列と受信ハンドルを含む ChangeMessageVisibilityBatchRequestEntry オブジェクトのリストを作成します。次に、リストを Amazon SQS クライアントクラスの changeMessageVisibilityBatch
メソッドに渡します。
インポート
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.ChangeMessageVisibilityBatchRequestEntry; import java.util.ArrayList; import java.util.List;
Code
AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); List<ChangeMessageVisibilityBatchRequestEntry> entries = new ArrayList<ChangeMessageVisibilityBatchRequestEntry>(); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg1", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout)); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg2", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout + 200)); sqs.changeMessageVisibilityBatch(queue_url, entries);
GitHub
詳細
-
Amazon SQS デベロッパーガイドの可視性タイムアウト
-
Amazon SQS API リファレンスの SetQueueAttributes
-
Amazon SQS API リファレンスの GetQueueAttributes
-
Amazon SQS API リファレンスの ReceiveMessage
-
Amazon SQS API リファレンスの ChangeMessageVisibility
-
Amazon SQS API リファレンスの ChangeMessageVisibilityBatch