gpt4 book ai didi

azure - 订阅 Service Fabric 群集级别事件

转载 作者:行者123 更新时间:2023-12-04 15:52:04 24 4
gpt4 key购买 nike

我正在尝试创建一项服务,该服务将为在我的 Service Fabric 集群中运行的应用程序更新服务端点的外部列表。 (基本上,我需要在本地 F5 负载均衡器中复制 Azure 负载均衡器。)

在上个月的 Service Fabric 问答中,团队向我指出 RegisterServiceNotificationFilterAsync .

我使用这种方法创建了一个无状态服务,并将其部署到我的开发集群中。然后,我通过运行 ASP.NET Core 无状态服务模板创建了一个新服务。

我预计当我部署第二个服务时,断点会在第一个服务中命中,表明已添加服务。但没有遇到断点。

我在互联网上发现的此类事情的示例非常少,因此我在这里询问,希望其他人已经这样做了,并且可以告诉我哪里出了问题。

以下是我的服务 try catch 应用程序更改的代码:

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");
}

如果您有任何关于如何进行此操作的提示,我很乐意看到它们。

最佳答案

您需要设置MatchNamePrefix为 true,如下所示:

    var filterDescription = new ServiceNotificationFilterDescription
{
Name = new Uri("fabric:"),
MatchNamePrefix = true
};

否则它只会匹配特定的服务。在我的应用程序中,当此参数设置为 true 时,我可以捕获集群范围的事件。

关于azure - 订阅 Service Fabric 群集级别事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45247218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com