每当我需要向Amazon SQS发送消息时,我应该调用CreateQueue吗?

时间:2013-04-11 09:40:04

标签: amazon-web-services amazon-sqs

我以某种方式在Wikipedia:SQS中看到这句话写道:

  

如果连续30天没有访问整个队列,亚马逊保留删除整个队列的权利。

  1. 这确认了吗?我找不到相关的资源。

  2. 如果是这样,说,我的程序一直没有调用SQS很长一段时间,这是否意味着我需要确保我的队列总是在那里调用{{1每当我想把一些消息推送到队列?

3 个答案:

答案 0 :(得分:2)

如果队列不存在,您将收到AWS.SimpleQueueService.NonExistentQueue错误(请参阅SQS API docs)。所以一种安全的方法是在没有任何额外检查的情况下发送,并适当地处理错误。

也就是说,通常如果您使用队列,您有一些接收组件从时间(或一直使用例如长轮询)轮询队列。该组件的存在确保队列存在;也就是说,在接收端你创建队列(如果它不存在),然后只访问它(根据文档,每个访问计数)。

如果没有接收组件不时检查队列,发送消息没有多大意义:)

答案 1 :(得分:2)

我想确认他们保留删除30天内未使用的队列的权利:

  

Amazon SQS可以删除您的队列而不通知其中一个   以下行动连续30天未执行:   SendMessage,ReceiveMessage,DeleteMessage,GetQueueAttributes,   SetQueueAttributes,AddPermission和RemovePermission。

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSConcepts.html#AboutQueues

答案 2 :(得分:0)

更新:此警告已替换为in the current SQS documentation

  

请注意

     

除非您的应用程序特别需要重复创建   队列并使它们处于非活动状态或存储大量数据   您的队列,请考虑使用Amazon S3存储您的数据。

亚马逊没有删除它们,所以把它当作FWIW。