如何让SQS队列停止接受新消息?

时间:2014-04-11 14:51:26

标签: amazon-web-services amazon-sqs

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

例如,假设我有一个包含以下消息的SQS队列Q

Q = [ A, B, C ]

我想对Q做点什么,这样如果我尝试添加新消息D,它就会失败,但我仍然会收到消息A,{{1 }和B。同样,我不关心订单 - CCA很好 - 我只需要一种方法来阻止添加新邮件。这样,只要我继续处理“关闭”队列中的消息,我保证在将来的某个时候将其消耗掉。

从表面上看,SQS似乎并不支持“开箱即用”的功能。但是,我似乎可以使用B来禁止相关帐户的队列中的RemovePermissionSendMessage

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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