【问题标题】:Is it possible to dequeue a message from SQS AWS service even before it gets processed?是否可以在消息被处理之前从 SQS AWS 服务中取出消息?
【发布时间】:2019-10-24 19:48:48
【问题描述】:

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

就像有这种方法使用ReceiptHandle 删除消息。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      虽然您无法在不阅读邮件的情况下选择性地删除邮件,但您可以使用 Purge Queue 功能一次性删除队列中的所有邮件。

      更多详情请见delete-all-messages-in-an-amazon-sqs-queue

      如果您想以编程方式执行此操作,那么各种 SDK 也支持。

      Here 是如何使用 Python SDK 实现此目的的示例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-10
        • 1970-01-01
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 2015-12-04
        相关资源
        最近更新 更多