我以某种方式在Wikipedia:SQS中看到了这个短语,它写道:
如果连续 30 天未访问,亚马逊保留在不通知的情况下删除整个队列的权利。
这得到证实了吗?虽然我找不到相关资源。
如果是这种情况,我的程序已经有一段时间没有调用 SQS,这是否意味着我需要通过在我想将一些消息推送到队列时调用来确保我的队列始终存在?
CreateQueue
我以某种方式在Wikipedia:SQS中看到了这个短语,它写道:
如果连续 30 天未访问,亚马逊保留在不通知的情况下删除整个队列的权利。
这得到证实了吗?虽然我找不到相关资源。
如果是这种情况,我的程序已经有一段时间没有调用 SQS,这是否意味着我需要通过在我想将一些消息推送到队列时调用来确保我的队列始终存在?CreateQueue
如果队列不存在,您将收到AWS.SimpleQueueService.NonExistentQueue
错误消息(请参阅SQS API 文档)。因此,一种安全的方法是在不进行任何额外检查的情况下发送,并适当地处理错误。
也就是说,通常如果您使用队列,您有一些接收组件从时间(或一直,使用例如长轮询)轮询队列。该组件的存在确保队列存在;也就是说,如果队列不存在,您将在接收端创建队列,然后访问它(根据文档,每次访问都很重要)。
如果没有不时检查队列的接收组件,那么发送消息就没有多大意义了:)
我想确认他们保留删除 30 天内未使用的队列的权利:
如果连续 30 天未对其执行以下操作之一,Amazon SQS 可以在不通知的情况下删除您的队列:SendMessage、ReceiveMessage、DeleteMessage、GetQueueAttributes、SetQueueAttributes、AddPermission 和 RemovePermission。
更新:此警告已在当前 SQS 文档中替换为:
笔记
除非您的应用程序特别需要重复创建队列并使其处于非活动状态或在队列中存储大量数据,否则请考虑使用 Amazon S3 来存储您的数据。
亚马逊没有删除它们,所以FWIW。