37

メッセージを「既読」としてカウントしたくありませんが、キューに何が入っているかを知りたいです。ドキュメント:

http://boto.s3.amazonaws.com/ref/sqs.html#module-boto.sqs

何がメッセージを吸収し、何が吸収しないかについては、あまり単純ではありません。ダンプメッセージは近いようですが、ファイルではなくメモリでこれを行いたいと思います。

よくある質問:

http://aws.amazon.com/articles/1343#12

大ざっぱな解決策があります:

メッセージを確認するにはどうすればよいですか?

バージョン 2008-01-01 では、PeekMessage アクションが Amazon SQS から削除されました。この機能は、主に小規模なシステムをデバッグするために使用されました。具体的には、メッセージがキューに正常に送信されたか、キューから削除されたことを確認するために使用されました。バージョン 2008-01-01 でこれを行うには、メッセージ ID とメッセージの受信ハンドルをログに記録し、それらを関連付けて、メッセージがいつ受信され削除されたかを確認します。

これで運が良かった人はいますか?これは非常に基本的なキュー機能のように思えますが、これを行うクリーンな方法がなかったらショックです。

4

3 に答える 3

17

SQS で使用できる真のピーク機能はなくなりましたが、get_messagesを使用して、visibility_timeout をかなり低く設定するだけで、目的を達成できる可能性があります。読んだメッセージを削除しない限り、visibility_timeout の期限が切れた後にキューに再表示され、読むことができるようになります。唯一のトリッキーな部分は、タイムアウトの長さを把握しようとすることです。キューに大量のメッセージがある場合、get_messages を複数回呼び出してすべてを取得する必要があり、メッセージをまだ覗いている間に、以前に読んだメッセージが再表示されることはおそらく望ましくありません。

于 2012-04-11T12:07:08.873 に答える