1

私のサービスデプロイメントでは、2つのロールがあります。Webロールとワーカーロールです。Webロール
のon_start()メソッドで、ワーカーロールのインスタンスを列挙し、内部エンドポイントでtcp接続を作成します。
ただし、ワーカーロールのインスタンスがまだ開始されていないために失敗することがよくあります。
したがって、問題は、インスタンスが開始されたかどうかを知ることができるか、またはワーカーロールのインスタンスが何らかの方法で開始されるのを待つことができるかということです。ここにコード

public override bool OnStart()
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            ConnectionStatics.ConnectRouterToWorkers();
            Messaging.KeepReadingMessages.Start();

            return base.OnStart();
        }
4

2 に答える 2

4

再試行ロジックをループに組み込むことをお勧めします。接続を確立できない場合は、スリープして後で再試行するだけです。これにより、起動時の問題が解決されるだけでなく、インスタンスがファブリック コントローラーによって追加/削除されたときに (さまざまな理由で発生する可能性があります)、サービス トポロジの変更に対処するのに役立ちます。

さらに一歩進んで、RoleEnvironmentChanging および RoleEnvironmentChanged イベントを利用して、インスタンスが追加/削除されたときに通知を提供できる場合がありますしかし、私はこれを個人的に活用したわけではなく、これらのメソッドが特定のインスタンスの「準備完了状態」をどのように反映するか、または反映しないかについて、はっきりとは言えません。

于 2012-04-11T13:01:50.570 に答える
1

もう1つのオプションは、ワーカーロールが起動時にメッセージをキューに入れるようにすることです。次に、キューを確認して、そこにメッセージが投稿されるのを待つことができます。

于 2012-04-11T18:48:25.853 に答える