簡體   English   中英

使用ruby在aws中獲取sqs消息visibility_timeout

[英]fetch sqs message visibility_timeout in aws using ruby

在sqs中,有什么方法可以獲得消息的visibility_timeout嗎? 我計划在每次過期時將visibility_timeout加倍。 如果SQS沒有這樣的API可以獲取消息的visibility_timeout,我將需要維護一個單獨的映射。

以下是獲取SQS隊列的可見性時間的語法。 GetQueueAttributes將為您提供可見性超時的價值。

http://sqs.us-east-1.amazonaws.com/123456789012/testQueue/
?Action=GetQueueAttributes
&AttributeName.1=All
&Version=2012-11-05
&Expires=2013-10-18T22%3A52%3A43PST
&AUTHPARAMS

上述請求的響應如下。

<GetQueueAttributesResponse>
  <GetQueueAttributesResult>
    <Attribute>
      <Name>ReceiveMessageWaitTimeSeconds</Name>
      <Value>2</Value>
    </Attribute>
    <Attribute>
      <Name>VisibilityTimeout</Name>
      <Value>30</Value>
    </Attribute>
    <Attribute>
      <Name>ApproximateNumberOfMessages</Name>
      <Value>0</Value>
    </Attribute>
    <Attribute>
      <Name>ApproximateNumberOfMessagesNotVisible</Name>
      <Value>0</Value>
    </Attribute>
    <Attribute>
      <Name>CreatedTimestamp</Name>
      <Value>1286771522</Value>
    </Attribute>
    <Attribute>
      <Name>LastModifiedTimestamp</Name>
      <Value>1286771522</Value>
    </Attribute>
    <Attribute>
      <Name>QueueArn</Name>
      <Value>arn:aws:sqs:us-east-1:123456789012:qfoo</Value>
    </Attribute>
    <Attribute>
      <Name>MaximumMessageSize</Name>
      <Value>8192</Value>
    </Attribute>
    <Attribute>
      <Name>MessageRetentionPeriod</Name>
      <Value>345600</Value>
    </Attribute>
  </GetQueueAttributesResult>
  <ResponseMetadata>
    <RequestId>1ea71be5-b5a2-4f9d-b85a-945d8d08cd0b</RequestId>
  </ResponseMetadata>
</GetQueueAttributesResponse>

確保您了解開發人員指南中的“ 可見性超時 ”。

當您收到消息時,可見性計時器將啟動。 沒有辦法在收到的消息上查詢它 - 你可以從收到的時間中通過減去隊列的默認值來計算它,從你坐在消息上的時間減去......或者減去自你以來的時間最后設置它的可見性超時,從你設置它的時間。

加倍超時可能不是最好的計划,因為它有一個最大值,你可能會在幾次加倍后無意中擊中,並且在許多或大多數應用程序中,增加可見性超時應該是不必要的。 這可能表明您正在考慮在其預期設計之外使用S3。

此外,單個隊列限制為120,000個正在進行的消息,其中包括您已收到但未刪除的任何消息 - 包括其可見性超時(無論是默認還是擴展)的所有消息都未過期。

並且,更改消息的可見性超時構成對SQS API的可計費請求。

所有SQS API調用都算作請求

https://aws.amazon.com/sqs/pricing/

或許,更好,只需將其默認為合理的值,並在合理的時間內更新,如果需要更新。 處理並刪除消息后,可見性超時變得毫無意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM