如何一次性删除SQS队列中的所有消息

时间:2016-08-31 15:05:29

标签: java amazon-web-services amazon-sqs

根据亚马逊文档,从SQS队列中删除单个邮件的代码是:

    // Delete a message
System.out.println("Deleting a message.\n");
String messageReceiptHandle = messages.get(0).getReceiptHandle();
sqs.deleteMessage(new DeleteMessageRequest()
    .withQueueUrl(myQueueUrl)
    .withReceiptHandle(messageReceiptHandle));

但是,假设我有超过20条消息,我真的必须为每条消息处理这个消息吗?或者有没有办法进行批量删除?

感谢您的任何见解。

3 个答案:

答案 0 :(得分:1)

只是看看API做类似的事情DeleteMessageBatchRequest似乎可以解决问题。

答案 1 :(得分:1)

如果您要删除所有不需要批量删除的邮件,您应该像这样清除队列:

var request = new Amazon.SQS.Model.PurgeQueueRequest
{
    QueueUrl = "your queue url"
};
_sqsClient.PurgeQueue(request);

清除队列会删除队列中已有的所有消息

答案 2 :(得分:0)

如果查看SDK documentation,您会看到一个deleteMessageBatch方法,其中包含一系列消息。