码迷,mamicode.com
首页 > Web开发 > 详细

Consul作为配置中心,配置Asp.Net Core应用程序

时间:2019-10-09 12:30:55      阅读:648      评论:0      收藏:0      [点我收藏+]

标签:uri   mic   using   log   mamicode   应用程序   bsp   项目   consul   

前言

最近项目逐步转向基于.Net Core,目前dotnet core 虽然已出3.0了但还没有特别成熟的框架,要实现微服务,必须要解决配置中心的问题 。不管是不是微服务,节点多了配置文件一个个更改非常麻烦,今天分享一个基于Consul 实现轻量级的配置中心方案。

实现思路基于Consul的Key/value ,多个Consul 节点之间可以自动同步配置,我们的程序中就是实现ConfigurationProvider,监听Consul变化

代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Winton.Extensions.Configuration.Consul;

namespace Bo.ServiceB
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            var cancellationTokenSource = new CancellationTokenSource();
            return WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    var env = hostingContext.HostingEnvironment;
                    hostingContext.Configuration = config.Build();
                    string consul_url = hostingContext.Configuration["Consul_Url"];
                    config.AddConsul(
                                $"{env.ApplicationName}/appsettings.{env.EnvironmentName}.json",
                                cancellationTokenSource.Token,
                                options =>
                                {
                                    options.Optional = true;
                                    options.ReloadOnChange = true;
                                    options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; };
                                    options.ConsulConfigurationOptions = cco => { cco.Address = new Uri(consul_url); };
                                }
                                ).AddEnvironmentVariables();

                    hostingContext.Configuration = config.Build();
                }).UseUrls("http://localhost:5012")
                 .UseStartup<Startup>();
        }
    }
}

Consul 中Key/Value 配置:

$"{env.ApplicationName}/appsettings.{env.EnvironmentName}.json",

env.ApplicationName :应用程序名称 如:Bo.ServiceB
env.EnvironmentName: appsettings.Development.json

技术图片

 

 代码中输出AppName配置:

        [HttpGet]
        public string Get()
        {
            return HttpContext.Request.Host.Port + " " + Configuration["AppName"].ToString() + " " + DateTime.Now.ToString();
        }

  

技术图片

 

 查看多个节点同步情况

技术图片

 

 

技术图片

 

 

 源码地址:https://github.com/zhangbojr/Consul-key-Value-.git

 

Consul作为配置中心,配置Asp.Net Core应用程序

标签:uri   mic   using   log   mamicode   应用程序   bsp   项目   consul   

原文地址:https://www.cnblogs.com/bob-zb/p/11640832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!