25

ドキュメントによると:

Q: 各メッセージは何回受信されますか?

Amazon SQS は、キュー内のすべてのメッセージを「少なくとも 1 回」配信するように設計されています。ほとんどの場合、各メッセージはアプリケーションに 1 回だけ配信されますが、メッセージを複数回処理してもエラーや矛盾が発生しないようにシステムを設計する必要があります。

確実に 1 回の配信を実現するための適切な方法はありますか?

DynamoDB の「Conditional Writes」</a> を分散ロック メカニズムとして使用することを考えていましたが、もっと良いアイデアはありますか?


このトピックへの参照:

4

4 に答える 4

9

最善の解決策は、メッセージで提案されたアクションを2回以上実行しないことがどれほど重要であるかによって異なります。ファイルの削除や画像のサイズ変更などの一部のアクションでは、2回発生しても問題にならないため、何もしなくても問題ありません。2回目に作業を行わないことがより重要な場合は、各メッセージ(送信者によって生成された)に識別子を使用し、受信者はmemchachdに表示されるIDをマークすることで重複を追跡します。多くのことで問題ありませんが、人生やお金がそれに依存している場合、特に複数の消費者がいる場合はおそらくそうではありません。

条件付き書き込みは賢い解決策のように聞こえますが、完全な1回限りの解決策が必要な場合、おそらくAWSは問題に対するそれほど優れた解決策ではないのではないかと思います。

于 2012-11-21T09:25:50.950 に答える