我目前正在使用亞馬遜的SQS,並且在嘗試刪除當前「正在進行中」的隊列消息時遇到問題。使用收據處理刪除SQS消息
下面是一些示例代碼:
ReceiveMessageRequest queueRequest = new ReceiveMessageRequest();
queueRequest.WithMaxNumberOfMessages(1);
queueRequest.WithQueueUrl(config.QueueURL);
queueRequest.WithAttributeName("All");
ReceiveMessageResponse response = sqs.ReceiveMessage(queueRequest);
if (response.IsSetReceiveMessageResult())
{
ReceiveMessageResult result = response.ReceiveMessageResult;
if (result.IsSetMessage())
{
if (result.Message.First() != null)
{
return new Tuple<string, string, bool>(result.Message.First().ReceiptHandle, result.Message.First().Body ?? null, false);
}
}
}
現在接收兩個手柄,和消息體之後,我存儲收據手柄串入雲存儲(DynamoDB例如)。我後來在載荷處理出來的存儲服務,並呼籲有類似以下的東西刪除:
sqs.DeleteMessage(new DeleteMessageRequest() { QueueUrl = "urL", ReceiptHandle = handle });
然而,運行線的時候,我收到一個「輸入收據句柄無效」的錯誤信息。
注意,我知道這條消息沒有被重新收到,所以收到的日誌記錄應該是最新的。還請注意,我目前可以在同一個應用程序中刪除消息,只需在收到消息後進行休眠,然後嘗試按上述方法刪除它!
任何想法?
你解決了這個塞繆爾嗎?我似乎遇到了同樣的問題。 –