forked from anjoy8/Blog.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNacosSetup.cs
More file actions
53 lines (50 loc) · 2.34 KB
/
NacosSetup.cs
File metadata and controls
53 lines (50 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using Blog.Core.Common;
using Blog.Core.Common.Helper;
using Blog.Core.Extensions.NacosConfig;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Nacos.V2.DependencyInjection;
using System;
namespace Blog.Core.Extensions
{
/// <summary>
/// Nacos
/// </summary>
public static class NacosSetup
{
public static void AddNacosSetup(this IServiceCollection services, IConfiguration Configuration)
{
if (services == null) throw new ArgumentNullException(nameof(services));
// 在实际生产工作中 本地开发是不需要注册nacos的 所以根据环境变量去判断
// 比如 开发环境 dev 测试环境 test 生产 prod 只有这几种环境变量的时候才需要去注册nacos
if (AppSettings.app(new string[] { "Startup", "Nacos", "Enabled" }).ObjToBool())
{
// 从当前配置取文件去注册naocs
services.AddNacosV2Config(x =>
{
x.ServerAddresses = JsonConfigSettings.NacosServerAddresses;
x.EndPoint = "";
x.Namespace = JsonConfigSettings.NacosNamespace;
x.DefaultTimeOut = JsonConfigSettings.NacosDefaultTimeOut;
x.ListenInterval = JsonConfigSettings.ListenInterval;
// swich to use http or rpc
x.ConfigUseRpc = false;
});
services.AddNacosV2Naming(x =>
{
x.ServerAddresses = JsonConfigSettings.NacosServerAddresses;
x.EndPoint = "";
x.Namespace = JsonConfigSettings.NacosNamespace;
x.DefaultTimeOut = JsonConfigSettings.NacosDefaultTimeOut;
x.ListenInterval = JsonConfigSettings.ListenInterval;
// swich to use http or rpc
x.NamingUseRpc = false;
});
services.AddHostedService<NacosListenNamingTask>(); //增加服务注入,删除事件
// 监听nacos中的配置中心 如果有新配置变更 执行相关逻辑
services.AddHostedService<NacosListenConfigurationTask>();//增加配置文件监听事件
}
services.AddSingleton(Configuration);
}
}
}