2012-02-18 13 views
2

今:SQS Amazon SQSとSNSを使用してプッシュキューを設計する方法は?

  • Aネットワーカーの役割の世論調査に

    • のApp#1のインサートのメッセージキューとメッセージが見つかった場合、プロセスへのApp#2にそれを送った、仕上げにアプリケーション#2を待ち、再スタートのポーリングキュー
    • のApp#2プロセスのApp#2がメッセージを処理するために非常に長く取ることができると私が同時に送信されたメッセージの数を予想することはできません限り、重いタスク

    あるメッセージApp#1から、キューシステムはApp#2資源が使い果たされず、システムは非常に容易に拡張できます。しかし、私が解決したい問題があります。キューをポーリングするだけで、ワーカーの役割(今はAzure上で)を実行するマシンがないようにしたいと考えています(すべてがワーカーロールがオプションではないところでホストされています)。さらに、ポーリングの間に休止があるため、ポーリングはプッシュと同じように反応することはありません。

    ポーリングからプッシュへの切り替えは適切な方向に向いていますが、1秒間に1kメッセージが送信されても​​App#2が1つずつ処理され、1kに達していないことを保証する必要があります回/秒。

    私はApp#1がサブスクライバがSQSとApp#2であるSNSトピックに公開するデザインを計画していました。 App#2はSQSキューをチェックし、空であればそれを終了し、メッセージを1つずつ処理してから終了します。しかし、どうすればApp#2(.Net Web/Webサービス)をコーディングすれば、すでにメッセージを処理していてSNSから通知を受け取っても何もせずに終了する(複数の処理が実行されない場合)。

    これはどのように設計するのですか?私はthis blog postを読んでいますが、複数のメッセージを同時に処理する処理アプリケーションを回避する方法はわかりません。

  • 答えて

    2

    ポーリングの「スリープ間隔」を短縮する方法としてSNSの役割を考えているなら、単にクエリパワーを変更しないでください。アプリ#2は依然としてメッセージを処理しますが、 「眠る」と告げると、それは目を覚まし、すぐに投票を開始します。

    0

    配信ポリシーを使用することで、これらすべてをラウンドすることができます。レート制限を指定し、エンドポイントのルールを再試行できます。

    関連する問題