有没有办法完全自动删除 SQS 队列。我有一个解决方案,其中服务器在启动时创建 SQS 并订阅 SNS 主题。
然而,可能存在服务器崩溃且无法恢复的情况。在这种情况下,我会用另一台服务器替换该服务器,该服务器会在启动时创建自己的队列。现在之前的队列将不再使用。
有没有办法让队列在我明确删除它的情况下自动删除(也许就像如果队列保持空 5 天,它会被自动删除或其他替代方案)?
目前,AWS SQS 不提供在队列为空一定天数时自动删除队列的机制。即使我觉得这是一个必要的功能。但有一些方法可以解决这个问题。
下面提到了根据您问题中的场景删除AWS SQS的几种方法。您可以选择最适合您的。
- 维持小Database保持的表服务器 IP 和队列 URL 之间的映射。当服务器自行启动时,您可以将值插入到该表中。维持一个云观察将调用的规则Lambda,它将检查表中的值以查看服务器是否正在运行(可能通过心跳)。如果特定服务器没有运行,只需获取相关的SQS URL and 删除该特定队列。 (我在这里推荐Lambda,因为它便宜)
sqs.deleteQueue(new DeleteQueueRequest(myQueueUrl));
每当服务器启动时,它可以发送一个Email向具有服务器 IP 和 SQS URL 的人使用SNS。用一个CloudWatch规则,调用一个Lambda时不时地获取所有实例,并检查是否有任何实例已关闭。如果某个实例已关闭,请使用 SNS 向相关人员发送电子邮件,告知该服务器已关闭。它是半自动的,用户可以在看到电子邮件后手动删除队列。
只需让空队列独立即可。 AWS 内部可以创建的队列数量没有限制。那么,如果这个过程很困难,为什么要费力删除它们呢?只需在进行过程中创建新的队列即可。 (看:无最大SQS队列数限制 https://stackoverflow.com/a/14367090/4388776)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)