6

Service Fabric クラスターで実行されているアプリケーションのサービス エンドポイントの外部リストを更新するサービスを作成しようとしています。(基本的に、オンプレミスの F5 ロード バランサーで Azure ロード バランサーをレプリケートする必要があります。)

先月の Service Fabric Q&A で、チームは私にRegisterServiceNotificationFilterAsyncを指摘しました。

この方法を使用してステートレス サービスを作成し、開発クラスターにデプロイしました。次に、ASP.NET Core ステートレス サービス テンプレートを実行して、新しいサービスを作成しました。

2 番目のサービスをデプロイしたときに、最初のサービスでブレーク ポイントがヒットし、サービスが追加されたことを示すだろうと予想していました。しかし、ブレークポイントはヒットしませんでした。

私はインターネット上でこの種の例をほとんど見つけていないので、他の誰かがこれを行ったので、私がどこで間違ったのか教えてください.

アプリケーションの変更をキャッチしようとしている私のサービスのコードは次のとおりです。

protected override async Task RunAsync(CancellationToken cancellationToken)
{

    var fabricClient = new FabricClient();

    long? filterId = null;


    try
    {
        var filterDescription = new ServiceNotificationFilterDescription
        {
            Name = new Uri("fabric:")
        };
        fabricClient.ServiceManager.ServiceNotificationFilterMatched += ServiceManager_ServiceNotificationFilterMatched;
        filterId = await fabricClient.ServiceManager.RegisterServiceNotificationFilterAsync(filterDescription);


        long iterations = 0;

        while (true)
        {
            cancellationToken.ThrowIfCancellationRequested();

            ServiceEventSource.Current.ServiceMessage(this.Context, "Working-{0}", ++iterations);

            await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
        }
    }
    finally
    {
        if (filterId != null)
            await fabricClient.ServiceManager.UnregisterServiceNotificationFilterAsync(filterId.Value);
    }



}

private void ServiceManager_ServiceNotificationFilterMatched(object sender, EventArgs e)
{
    Debug.WriteLine("Change Occured");
}

これを実現するためのヒントがあれば、ぜひご覧ください。

4

1 に答える 1