一般,多個相同的微服務器,它們的appsettings.json配置文件的內容都是同樣的,若是,每次修改配置文件,都要逐個替換,那就太繁瑣了,咱們能夠利用網關的文件共享功能,實現配置文件的統一更新。html
首先,在網關程序的當前目錄下,新建一個文件夾sharesjson
而後編輯網關的appsettings.json,增長一項ShareFolder,指定./shares問共享文件目錄服務器
重啓網關程序app
在shares文件夾裏面,新建一個Helloworld.json文件微服務
內容以下:ui
{ "port" : 7902 }
MyHelloworldService項目引用 Microsoft.Extensions.Configuration.Json nuget包spa
打開Program.cs文件,代碼改成這樣:3d
using JMS; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; namespace MyHelloworldService { class Program { static void Main(string[] args) { var gateways = new NetAddress[] { new NetAddress("192.168.40.131" , 7900) }; ServiceCollection services = new ServiceCollection(); services.AddLogging(loggingBuilder => { loggingBuilder.SetMinimumLevel(LogLevel.Debug); loggingBuilder.AddConsole(); }); var msp = new MicroServiceHost(services); //先從網關下載最新的配置文件到本地 msp.GetGatewayShareFile(gateways[0], "Helloworld.json", "./appsettings.json"); //映射Helloworld.json到./appsettings.json,這樣Helloworld.json只要有更新,就下載覆蓋本地appsettings.json msp.MapShareFileToLocal(gateways[0], "Helloworld.json", "./appsettings.json"); //加載本地配置文件 var builder = new ConfigurationBuilder(); builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false); var configuration = builder.Build(); var port = configuration.GetValue<int>("port"); msp.Register<HelloworldController>("Hello world"); msp.RegisterScheduleTask<AutoRun>(); msp.Build(port, gateways) .Run(); } } }
msp.MapShareFileToLocal 方法實現了實時同步更新的功能。code