是否可以在处理之前从SQS AWS服务中使消息出队?

时间:2019-06-10 11:55:22

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

我刚刚开始使用AWS的SQS服务。好吧,我确实知道我们可以使用收到消息时得到的ReceiptHandle删除进程,但是我想删除消息在队列中时将其删除或将其移到死信队列中。 是否可能因为文档中没有提及它?如果可以,请提供提示或代码或任何指向它的链接。 谢谢

就像这种方法使用ReceiptHandle删除邮件一样。

for (Message m : messages) {
    sqs.deleteMessage(queueUrl, m.getReceiptHandle());
}

2 个答案:

答案 0 :(得分:0)

进行更多研究后,我在AWS SQS开发人员指南中找到了它。

  

每次您从队列中收到消息时,都会收到该消息的回执句柄。该句柄与接收消息的操作相关,而不与消息本身相关。要删除消息或更改消息可见性,必须提供收据句柄(不是消息ID)。因此,您必须始终收到一条消息,然后才能删除它(不能将消息放入队列中然后再调用它)。收据句柄的最大长度为1,024个字符。

答案 1 :(得分:0)

虽然您无法不删除它们而选择性地删除消息,但可以使用“清除队列”功能一次删除队列中的所有消息。

更多详细信息列在delete-all-messages-in-an-amazon-sqs-queue

如果您要以编程方式执行此操作,则各种SDK也都支持。

Here是使用Python SDK进行操作的示例