自动删除SQS队列

lea*_*hru 7 amazon-sqs amazon-web-services

有没有办法完全自动删除SQS队列.我有一个解决方案,其中启动时的服务器创建SQS并订阅SNS主题.

然而,可能存在服务器崩溃并且不可恢复的情况.在这种情况下,我会用不同的服务器替换服务器,这将在启动时创建自己的队列.现在不再使用较早的队列了.

是否有一种方法可以让队列自动删除并明确删除它(可能就像队列在5天内保持空白,它会被自动删除或其他一些替代方案)?

Kee*_*asa 4

目前,AWS SQS 不提供在队列为空一定天数时自动删除队列的机制。即使我觉得这是一个必要的功能。但有一些方法可以解决这个问题。

下面提到了根据您问题中的场景删除AWS SQS的几种方法。您可以选择最适合您的。

  1. 维护一个小型数据库表,用于保存服务器 IP 和队列 URL 之间的映射。当服务器自行启动时,您可以将值插入到该表中。维护一个将调用Lambda 的Cloudwatch规则,它将检查表中的值以查看服务器是否正在运行(可能通过心跳)。如果特定服务器未运行,只需获取相关的SQS URL删除该特定 Queue 即可。(我在这里推荐Lambda,因为它便宜)

sqs.deleteQueue(new DeleteQueueRequest(myQueueUrl));

  1. 每当服务器启动时,它就可以使用SNS向具有服务器 IP 和 SQS URL 的人发送电子邮件。使用CloudWatch Rule ,不时调用Lambda ,并获取所有实例,并检查是否有任何实例已关闭。如果某个实例已关闭,请使用 SNS 向相关人员发送电子邮件,告知该服务器已关闭。它是半自动的,用户可以在看到电子邮件后手动删除队列。

  2. 只需让空队列独立即可。AWS 内部可以创建的队列数量没有限制。那么,如果这个过程很困难,为什么要费力删除它们呢?只需在进行过程中创建新的队列即可。(参见:无SQS队列最大数量限制