今:SQS Amazon SQSとSNSを使用してプッシュキューを設計する方法は?
- の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を読んでいますが、複数のメッセージを同時に処理する処理アプリケーションを回避する方法はわかりません。