Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在使用AWS SQS时,是否有任何理由更喜欢使用GetQueueUrl而不是从区域、帐户id和名称构建队列url?_Amazon Web Services_Amazon Sqs - Fatal编程技术网

Amazon web services 在使用AWS SQS时,是否有任何理由更喜欢使用GetQueueUrl而不是从区域、帐户id和名称构建队列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的官方方法。因此,虽然使用上述方法构建它可能是一个很好的猜测,但它也可能在任何时候

我有一个使用单个SQS队列的应用程序

为了灵活性,我希望使用队列名称、SQS区域和AWS帐户id(以及普通的AWS凭据等)配置应用程序,而不是提供完整的队列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