【问题标题】:How to peek at messages in the queue如何查看队列中的消息
【发布时间】:2012-04-23 10:31:10
【问题描述】:

我不希望邮件被视为“已读”,但我想知道队列中的内容。文档:

http://boto.s3.amazonaws.com/ref/sqs.html#module-boto.sqs

关于什么吸收信息和什么不吸收信息并不是很直接。转储消息似乎很接近,但我宁愿在内存中而不是在文件中执行此操作。

常见问题:

http://aws.amazon.com/articles/1343#12

有一些粗略的解决方案:

如何查看消息?

在 2008-01-01 版本中,PeekMessage 操作已从 亚马逊 SQS。此功能主要用于调试小型系统 — 专门用于确认消息已成功发送到队列 或从队列中删除。要使用版本 2008-01-01 执行此操作,您可以 记录您的消息的消息 ID 和回执句柄,以及 关联它们以确认何时收到消息并 已删除。

有没有人遇到过这种情况?这似乎是非常基本的队列功能,如果没有一种干净的方法来做到这一点,我会感到震惊。

【问题讨论】:

    标签: python amazon-web-services boto amazon-sqs


    【解决方案1】:

    SQS 中不再提供真正的 peek 功能,但您可以通过简单地使用 get_messages 并将 visibility_timeout 设置得非常低来完成您想要的操作。只要您不删除已阅读的消息,它们就会在 visibility_timeout 过期后重新出现在队列中并且可供阅读。唯一棘手的部分是试图弄清楚超时应该多长时间。如果队列中有大量消息,您将不得不多次调用 get_messages 来检索它们,并且您可能不希望之前阅读的消息在您仍在查看消息时再次出现。

    【讨论】:

    • 此方法的一个重要考虑因素是队列是否具有“重新驱动策略”,例如“如果此消息被接收 5 次且从未被删除,则将其放入单独的死信队列中。”在这种情况下,您的“偷看”会增加消息的接收计数,并可能导致消息在有机会真正得到处理之前“失败”。
    • 如果一切都失败了,为了避免“重新驱动政策”,你可以阅读它们,删除它们并重新发布它们......不是很好,但是......
    【解决方案2】:

    2020 年 11 月 11 日更新

    右键单击不再适用于新的 SQS 控制台。

    @marmor's answer


    原始答案(旧仪表板)

    如果您有权访问 Amazon 的 AWS 控制台,则可以在队列列表页面上右键单击队列。

    然后从弹出菜单中选择查看/删除消息

    这将弹出一个窗口,您可以在其中开始轮询队列中的消息。

    参考下图:

    【讨论】:

      【解决方案3】:

      右键单击在新的 SQS 控制台中不再起作用。

      要在SQS 控制台中查看队列消息,您现在需要单击队列 > Send and receive messages > Poll for messages

      【讨论】:

        猜你喜欢
        • 2018-02-20
        • 1970-01-01
        • 2015-01-24
        • 2013-10-20
        • 2019-04-07
        • 1970-01-01
        • 2011-02-15
        • 2021-06-23
        • 2019-01-07
        相关资源
        最近更新 更多