設定可見性逾時Amazon SQS - AWS SDK for Java 1.

AWS SDK for Java 1.x 已end-of-support於 2024 年 7 月 31 日進入維護模式,並將於二零二五年十二月三十一日推出。我們建議您移轉至,以繼續接收新功能、可用性改進和安全性更新。AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定可見性逾時Amazon SQS

當收到消息時Amazon SQS,它一直保留在隊列中,直到它被刪除,以確保收到。已收到但未刪除的消息將在給定可見性逾時,以幫助防止在處理和刪除郵件之前多次接收消息。

注意

當您使用標準隊列,可見性逾時並不保證不會收到兩次訊息。如果您使用的是標準隊列,請確保您的代碼可以處理同一消息多次傳遞的情況。

設定單個訊息的訊息可見性逾時

收到消息後,您可以修改其可見性超時,方法是將其收據句柄傳遞到ChangeMessageVisibilityRequest您傳遞給卓越亞馬遜 SQS 類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 上的完整範例

一次設置多條消息的消息可見性超時

若要同時為多條消息設置消息可見性超時,請創建ChangeMessageVisibilityBatchRequestEntry對象,每個對象都包含一個唯一的 ID 字符串和一個收據句柄。然後,將列表傳遞給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 上的完整範例

詳細資訊