dotnetcore / AgileConfig

基于.NET Core开发的轻量级分布式配置中心 / .NET Core lightweight configuration server
MIT License
1.5k stars 299 forks source link

注册的服务下线了不是实时更新的吗 #177

Closed a34546 closed 2 months ago

a34546 commented 5 months ago

最近在用AgileConfig服务注册发现对接网关,测试下来,服务上线会实时注册,服务下线后,配置中心的服务还是在线的,没有实时触发服务下线,会导致网关该节点还是正常在线的。我希望能及时知道服务上下线,然后去动态加载网关数据。有办法实时知道服务下线吗?

a34546 commented 5 months ago

目前在服务停止时,主动断开连接,可以做到实时 app.Services.GetRequiredService().ApplicationStopping.Register(async () => { await ConfigClient.Instance.DisconnectAsync(); });

kklldog commented 5 months ago

按理是不需要的,正常关闭程序应该会触发Stop方法。https://github.com/kklldog/AgileConfig_Client/blob/ea66641f9175f30517ea5f45e0391f546ca81194/AgileConfig.Client/RegisterCenter/RegisterHostedService.cs#L40 控制台直接X掉好像不会触发该方法,所以不会实时下线。会等待30s心跳没回复后自动下线。

a34546 commented 5 months ago

哦,那之前应该是我手动X掉控制台导致的没有及时更新.

a34546 commented 5 months ago

等待30s心跳,这个可以配置吗?我想设置短一点

kklldog commented 5 months ago

"serviceHealthCheckInterval": 15, // 服务健康检测的间隔时间,单位:秒 "serviceUnhealthInterval": 30, // 判断服务不健康的间隔,超出这个时间没响应过则认为不健康,单位:秒

这2个参数你调小一点