1

私にはスターターワーカーがいます。いくつかの初期化を行います。他のワーカーにこのスターター ワーカーを待ってもらいたい。私が考えている唯一の方法は、メッセージをキューに入れることです。ワーカーはキューをポーリングします。メッセージを読んだ後に開始します。同期するためのより良い方法はありますか?

4

1 に答える 1

2

キュー ポーリングの問題: 1 つのワーカーが「準備ができました」というキュー メッセージを確認すると、他のワーカーはどうなるでしょうか。リーダーがキュー メッセージを (当然のことながら) 削除すると、他のユーザーには表示されません。リーダーがそれを削除しない場合、残りの時間はそのメッセージが残ります (そして次回起動したとき、メッセージはまだそこにあります)。

起動中のワーカー ロール インスタンスで非常に単純な wcf サービスをホストし、AreYouRunning() メソッドが true/false を返すとしたらどうでしょうか。インスタンスがまだ OnStart() にある場合、サービスに接続できないはずです。接続したら、戻り値を確認するだけです。定期的なポーリングを行うために、他のロールが OnStart() または Run() で何らかのタイプのポーリング メカニズムを設定する必要があるだけです。

Azure テーブルに行を作成するなど、これを行うにはおそらく他の方法があります。他のロールが起動する前に、そのテーブルから「実行中」ステータスをクリアできることを確認する必要があるため、wcf サービスのアイデアがニーズにより適している可能性があります。

于 2011-05-10T17:56:42.470 に答える