私にはスターターワーカーがいます。いくつかの初期化を行います。他のワーカーにこのスターター ワーカーを待ってもらいたい。私が考えている唯一の方法は、メッセージをキューに入れることです。ワーカーはキューをポーリングします。メッセージを読んだ後に開始します。同期するためのより良い方法はありますか?
質問する
465 次
1 に答える
2
キュー ポーリングの問題: 1 つのワーカーが「準備ができました」というキュー メッセージを確認すると、他のワーカーはどうなるでしょうか。リーダーがキュー メッセージを (当然のことながら) 削除すると、他のユーザーには表示されません。リーダーがそれを削除しない場合、残りの時間はそのメッセージが残ります (そして次回起動したとき、メッセージはまだそこにあります)。
起動中のワーカー ロール インスタンスで非常に単純な wcf サービスをホストし、AreYouRunning() メソッドが true/false を返すとしたらどうでしょうか。インスタンスがまだ OnStart() にある場合、サービスに接続できないはずです。接続したら、戻り値を確認するだけです。定期的なポーリングを行うために、他のロールが OnStart() または Run() で何らかのタイプのポーリング メカニズムを設定する必要があるだけです。
Azure テーブルに行を作成するなど、これを行うにはおそらく他の方法があります。他のロールが起動する前に、そのテーブルから「実行中」ステータスをクリアできることを確認する必要があるため、wcf サービスのアイデアがニーズにより適している可能性があります。
于 2011-05-10T17:56:42.470 に答える