2016-12-28 12 views
1

簡単に質問するには、Azure Service FabricでService/Application Startupの依存関係を指定する方法がありますか?Azureサービスファブリックサービス/アプリケーションの起動依存関係の指定

私は2つのサービス、S1とS2を持っています。 S2はS1に依存し、S1の起動後に起動する必要があります。現在、S1とS2は異なるアプリケーションパッケージの下にあります。必要に応じて1つのアプリケーションパッケージに入れることもできます。

私は最初にS1を起動し、次に展開中にS2を起動すると機能します。しかし、サービスファブリックには保守作業があり、その間にサービスが再開されるようです。ここで問題となるのは、S1とS2の起動順序が保証されていないため、S2が初期化中に一部の構成を読み込めないということです。 S2はサイレントモードで失敗しますが、実行し続けます。

サービスファブリックで

SetupEntryPointを指定する方法がSetupEntryPoint 『私は、もとで長時間実行されているサービスを置くために適切ではないと感じるのほか、『SetupEntryPoint』」しかし、この場合S1自体が持っている中で、』あります。

私は」また、S1からコンフィギュレーションを読み込めなかった場合にS2を停止することを考えています。その場合、Service FabricはS1が開始されるまでS2を再起動しようとします。

しかし、S1からService Fabric config ?

+0

S2のロジックを追加して、S1プロセスの存在を検出し、初期化を遅らせました。これはうまくいきました – user2188649

答えて

1

私も同じ問題に直面しました。私はそれが可能ではないと思いますサービスファブリックの設定だけです。

私が解決策を思い付くのは、依存サービスが稼働していない限り、完全に起動しないようにサービスを再設計することです。私の場合、サービスAはサービスBに依存します。サービスAが最初に起動すると、メッセージバスにメッセージが送信され、サービスBが応答するのを待ちます。サービスBがすでに開始されている場合、サービスBは直接応答します。サービスBがまだ開始されていない場合、サービスBが開始されると、それが返信されます。その後、サービスAが返信を受け取ると、サービスの開始とともに続行されます。そうすれば、いつでも本当に始めることができます。

さらに簡単なもう1つの方法は、サービスBがダウンしている場合、サービスAで例外をスローすることです。サービスファブリックは別のノードでアプリケーションを起動しようとします。欠点は、最初の初期起動が痛いほど遅くなることです(正しい順序が表示されるまで再試行を続けるため)。また、多くのエラーが表示されます(ただし、すべてのサービスが起動した時点で終了します)

+0

ありがとう、それらは良いアイデアです!その間、私はServiceFabricチームがこれをサポートする機能を持っているべきだと思います。 – user2188649

+0

また、Aからサービスのステータスを照会し、Bがオンラインになるまで保留することもできます。https://docs.microsoft.com/en-us/rest/api/servicefabric/get-a-list-of-services – itaysk

関連する問題