2016-07-11 5 views
1

sqsで、メッセージのvisibility_timeoutを取得する方法はありますか? visibility_timeoutが期限切れになるたびに倍増する予定です。 SQSにそのようなAPIがない場合、メッセージのvisibility_timeoutを取得できます。別のマッピングを維持する必要があります。ルビーを使ってawsでvisits_timeoutを取得する

答えて

0

ここでは、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> 
0

デベロッパーガイドからVisibility Timeoutを理解してください。

メッセージを受信すると、表示タイマーが開始します。受け取ったメッセージでそれを調べる方法はありません。 - 受信した時間から、あなたがメッセージに座っていた時間からキューのデフォルトを差し引いて計算することができます。最後に、設定した時間から視界のタイムアウトを設定します。

タイムアウトを2倍にするのはおそらくベストプランではありません。何回か倍加した後で誤って打つことができる最大値があります。これは意図したデザインの外でS3の使用を検討しているという兆候かもしれません。

また、個々のキューは、受信したが削除されなかったメッセージを含む120,000件の飛行メッセージに制限されています。

メッセージの可視性のタイムアウトを変更すると、SQS APIに対する請求可能な要求が構成されます。

すべてのSQS APIコールは、リクエストとしてカウント

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

より良いアップデートがある場合は、おそらく、ただ、合理的な値にデフォルトし、妥当な時間でそれを更新必要。メッセージを処理して削除すると、可視性のタイムアウトは無意味になります。

関連する問題