適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 AWS SDK for Java 2.x,以繼續接收新功能、可用性改善和安全性更新。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
傳送、接收和刪除 Amazon SQS 訊息
本主題說明如何傳送、接收和刪除 Amazon SQS 訊息。訊息一律使用 SQS 佇列來傳送。
傳送訊息
呼叫 AmazonSQS 用戶端的 sendMessage方法,將單一訊息新增至 Amazon SQS 佇列。提供 SendMessageRequest 物件,其中包含佇列的 URL、訊息本文,以及選用的延遲值 (以秒為單位)。
匯入
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.SendMessageRequest;
Code
SendMessageRequest send_msg_request = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody("hello world") .withDelaySeconds(5); sqs.sendMessage(send_msg_request);
請參閱 GitHub 上的完整範例
一次傳送多個訊息
您可以在單一請求中傳送多個訊息。若要傳送多則訊息,請使用 AmazonSQS 用戶端的 sendMessageBatch方法,該方法會採用 SendMessageBatchRequest,其中包含要傳送的佇列 URL 和訊息清單 (每個都包含一個 SendMessageBatchRequestEntry)。您也可以為每個訊息設定選用的延遲值。
匯入
import com.amazonaws.services.sqs.model.SendMessageBatchRequest; import com.amazonaws.services.sqs.model.SendMessageBatchRequestEntry;
Code
SendMessageBatchRequest send_batch_request = new SendMessageBatchRequest() .withQueueUrl(queueUrl) .withEntries( new SendMessageBatchRequestEntry( "msg_1", "Hello from message 1"), new SendMessageBatchRequestEntry( "msg_2", "Hello from message 2") .withDelaySeconds(10)); sqs.sendMessageBatch(send_batch_request);
請參閱 GitHub 上的完整範例
接收訊息
呼叫 AmazonSQS 用戶端的 receiveMessage方法,將佇列的 URL 傳遞給佇列,以擷取目前佇列中的任何訊息。訊息會以 Message 物件清單的形式傳回。
匯入
import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException; import com.amazonaws.services.sqs.model.SendMessageBatchRequest;
Code
List<Message> messages = sqs.receiveMessage(queueUrl).getMessages();
在收到訊息後刪除訊息
收到訊息並處理其內容後,將訊息的接收控點和佇列 URL 傳送至 AmazonSQS 用戶端的 deleteMessage方法,從佇列刪除訊息。
Code
for (Message m : messages) { sqs.deleteMessage(queueUrl, m.getReceiptHandle()); }
請參閱 GitHub 上的完整範例
詳細資訊
-
《 Amazon SQS 開發人員指南》中的佇列如何運作 Amazon SQS
-
API Amazon SQS 參考中的 SendMessage
-
API Amazon SQS 參考中的 SendMessageBatch
-
Amazon SQS API 參考中的 ReceiveMessage
-
Amazon SQS API 參考中的 DeleteMessage