3

私は AWS SQS キューを初めて使用し、現在 boto で遊んでいます。while ループでメッセージで満たされたキューを読み取ろうとすると、10 ~ 25 個のメッセージが読み取られた後、キューがメッセージを返さないことに気付きました (キューに 1000 以上のメッセージがあるにもかかわらず)。数秒後、またはプログラムを停止して再起動すると、10 ~ 25 個のメッセージの別のセットの作成が開始されます。while true: read_queue() // 目的のキューとの接続はすでに確立されています。

この動作についての考えや、正しい方向に向けてください。繰り返しますが、私は SQS を始めてまだ数日です !!

ありがとう

4

2 に答える 2

2

これが、SQSキューがデフォルトで機能する方法です(ショートポーリング)。キューの設定後に設定を変更していない場合、デフォルトでは、マシンの重み付けされたランダムサンプリングからメッセージが取得されます。複数のマシンを使用していて、その時点で(すべてのマシンで)消費できるすべてのメッセージが必要な場合は、長いポーリングを使用する必要があります。こちらのAmazonのドキュメントを参照してください。botoがATMを直接サポートしているとは思いません。

于 2013-02-08T16:58:30.627 に答える
2

ロング ポーリングはより効率的です。これにより、次の結果を待つ間、HTTP 接続を開いたままにしておくことができるからです。ただし、ループを設定し、キューを読み取る間に一定時間待機するだけで、boto で独自のポーリングを行うことができます。このポーリング戦略を使用しても、全体的なスループットは良好です。

于 2013-02-08T17:35:19.553 に答える