我們宣布
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon SQS 中使用無效字母佇列
Amazon SQS支援無效字母排列。無效字母佇列即為其他 (來源) 佇列,可以針對無法成功處理的訊息以進行作業。您可以在無效字母佇列中擱置並隔離這類訊息,以確定無法成功處理訊息的原因。
創建無效字母佇列
死信隊列的創建方式與常規隊列相同,但具有以下限制:
-
死信隊列必須與源隊列與隊列類型相同(FIFO 或標準)。
-
死信隊列必須使用相同的AWS 帳戶和區域作為來源佇列。
在這裏,我們創建兩個相同Amazon SQS隊列,其中一個將作為死信隊列:
匯入
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException;
Code
final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Create source queue try { sqs.createQueue(src_queue_name); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } } // Create dead-letter queue try { sqs.createQueue(dl_queue_name); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }
請參閱 GitHub 上的完整範例
為來源佇列指定無效字母佇列
要指定死信隊列,您必須首先創建重新驅動策略,然後在隊列的屬性中設置策略。重新驅動器策略在 JSON 中指定,它指定死信隊列的 ARN 以及在將消息發送到死信隊列之前可以接收和不處理的最大次數。
要為源隊列設置重新驅動策略,請調用 AmazonSQS 類的setQueueAttributes
方法與SetQueueAttributesRequest對象,您已為其設置RedrivePolicy
屬性與 JSON 重新驅動策略相結合。
匯入
import com.amazonaws.services.sqs.model.GetQueueAttributesRequest; import com.amazonaws.services.sqs.model.GetQueueAttributesResult; import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
Code
String dl_queue_url = sqs.getQueueUrl(dl_queue_name) .getQueueUrl(); GetQueueAttributesResult queue_attrs = sqs.getQueueAttributes( new GetQueueAttributesRequest(dl_queue_url) .withAttributeNames("QueueArn")); String dl_queue_arn = queue_attrs.getAttributes().get("QueueArn"); // Set dead letter queue with redrive policy on source queue. String src_queue_url = sqs.getQueueUrl(src_queue_name) .getQueueUrl(); SetQueueAttributesRequest request = new SetQueueAttributesRequest() .withQueueUrl(src_queue_url) .addAttributesEntry("RedrivePolicy", "{\"maxReceiveCount\":\"5\", \"deadLetterTargetArn\":\"" + dl_queue_arn + "\"}"); sqs.setQueueAttributes(request);
請參閱 GitHub 上的完整範例
詳細資訊
-
使用Amazon SQS無效信件佇列中的Amazon SQS開發人員指南
-
SetQueueAttributes中的Amazon SQSAPI 參考