Amazon web services 在使用AWS SQS时,是否有任何理由更喜欢使用GetQueueUrl而不是从区域、帐户id和名称构建队列url?
我有一个使用单个SQS队列的应用程序 为了灵活性,我希望使用队列名称、SQS区域和AWS帐户id(以及普通的AWS凭据等)配置应用程序,而不是提供完整的队列url 使用Amazon web services 在使用AWS SQS时,是否有任何理由更喜欢使用GetQueueUrl而不是从区域、帐户id和名称构建队列url?,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我有一个使用单个SQS队列的应用程序 为了灵活性,我希望使用队列名称、SQS区域和AWS帐户id(以及普通的AWS凭据等)配置应用程序,而不是提供完整的队列url 使用GetQueueUrl检索队列的url是否有意义?如果我可以使用以下内容(在ruby中)构建它: 可能的原因: 亚马逊可能会改变他们的url格式 其他人 我认为您不能保证URL会有这样的格式。官方文档说明了GetQueueUrl调用是获取队列URL的官方方法。因此,虽然使用上述方法构建它可能是一个很好的猜测,但它也可能在任何时候
GetQueueUrl
检索队列的url是否有意义?如果我可以使用以下内容(在ruby中)构建它:
可能的原因:
- 亚马逊可能会改变他们的url格式
- 其他人
- 我认为您不能保证URL会有这样的格式。官方文档说明了
GetQueueUrl
调用是获取队列URL的官方方法。因此,虽然使用上述方法构建它可能是一个很好的猜测,但它也可能在任何时候失败,因为Amazon可以更改URL方案(例如,新队列)。如果Amazon以破坏性的方式更改队列URL,它将不会立即生效,并且会被缓慢地弃用,并且会在升级版本时生效(即升级SDK时)
虽然文档并不能保证这一点,但亚马逊知道这对成千上万的客户来说将是一个巨大的突破
此外,许多客户使用他们从控制台获得的硬编码队列URL,因此这些客户也不会获得更新的队列URL格式
最后,无论哪种方式,您都是安全的。如果您有很多队列,那么您最好自己设置它们的格式。如果您有少量队列,那么这两种方式都不会有太大区别。出于安全目的,我相信获取URL的最佳方式是通过
sqs.queue.named
方法。您可以做什么是按名称记忆队列以避免多次调用,类似于:
# https://github.com/phstc/shoryuken/blob/master/lib/shoryuken/client.rb
class Client
@@queues = {}
class << self
def queues(queue)
@@queues[queue.to_s] ||= sqs.queues.named(queue)
end
end
end
#https://github.com/phstc/shoryuken/blob/master/lib/shoryuken/client.rb
类客户端
@@队列={}
类说它随时可能失败并不十分准确。Amazon不会为已发布的WSDL版本中断现有客户端。是的,我是指新队列。新队列!=新客户端。Amazon知道存在创建新队列的现有应用程序,更改队列URL会中断这些应用程序。
# https://github.com/phstc/shoryuken/blob/master/lib/shoryuken/client.rb
class Client
@@queues = {}
class << self
def queues(queue)
@@queues[queue.to_s] ||= sqs.queues.named(queue)
end
end
end