1

リクエスト キューとレスポンス キューがあります。リクエスト キューからメッセージを取り出して、レスポンス キューに入れたいと思います。リクエスト キューから取り出された同じメッセージがレスポンス キューに入れられたことを識別できるようにしたいと考えています。

私は GAE で Boto を使用しています。

まず、メッセージ ID は一定であると想定しました。そのため、リクエスト キューからメッセージを読み取り、同じメッセージ オブジェクトをレスポンス キューに追加し、ID をクエリしました。SQS が新しい ID を生成しました。

次に、メッセージの本文は json オブジェクトであるため、カスタム フィールド 'messageId' を追加し、独自の ID を生成してキューに格納しました。しかし、その後、キューから一度に 10 件のメッセージを読み取るという制限があることがわかりました。また、SQS は分散型であるため、メッセージが返される保証はありません。

4

1 に答える 1

2

バックエンドサーバーのランダムなサブセットと通信するため、メッセージは配信されますが、特定のリクエストで取得する必要はありません。SQS では、「私宛てのメッセージが 3 つあることはわかっています。今すぐ送信してください」と言う方法はありません。あなたができる最善のことは、最終的にそれらを受け取るまでポーリングすることです. SQS は非常に優れていますが、すべてに適しているわけではありません。遅延が少なく、予測可能性が高く、メッセージが順序付けされたものが必要な場合は、RabbitMQ をご覧ください。Rabbit の唯一の問題は、規模が問題になることです。

于 2012-06-25T16:47:41.193 に答える