【问题标题】:How can I make an SQS queue stop accepting new messages?如何使 SQS 队列停止接受新消息?
【发布时间】:2014-05-25 19:22:12
【问题描述】:

我正在开发一个需要接受排队请求的程序,我想使用 SQS 作为我的队列。我的应用程序不关心消息顺序,但它确实需要能够“关闭”队列以接受新事件,同时排出剩余的消息。

例如,假设我有一个 SQS 队列 @9​​87654321@,其中包含以下消息:

Q = [ A, B, C ]

我想对Q 做点什么,这样如果我尝试添加新消息D 会失败,但我仍然可以收到消息ABC。同样,我不在乎顺序——CAB 很好——我只需要一种方法来防止添加新消息。这样,只要我继续处理“关闭”队列上的消息,我就可以保证在将来的某个时候将其耗尽。

表面上看,SQS 似乎不支持“开箱即用”的功能。不过,看起来我可以使用RemovePermission 来禁止SendMessageSendMessageBatch 出现在相关帐户的队列中。

致那些过去使用过 SQS 和 RemovePermission 的人:这种方法是否合理?

【问题讨论】:

    标签: amazon-web-services amazon-sqs


    【解决方案1】:

    另一个想法是在您的系统中进行一些配置,告诉生产者将新消息发送到哪里。这可以让您“关闭”旧队列而不会弄乱权限,只需知道您的所有客户端都将遵循规则并写入新队列。

    【讨论】:

    • 这是个好主意!不过,不幸的是,我并不能控制所有的制作人。
    【解决方案2】:

    是的,我认为您回答了自己的问题。这正是我会做的。删除发送* 权限。没有“暂停”队列的概念,也没有办法在网络层阻止访问。所以你被困在删除权限。当然,任何写入队列的客户端都会引发错误,但我假设您正在计划这样做。

    【讨论】:

    • 感谢您的验证!这是我能想到的防止提交新邮件的唯一方法,即使感觉有点笨拙和笨拙。
    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多