zoukankan      html  css  js  c++  java
  • JMS微服务开发示例(四)把配置文件appsettings.json 部署在网关,共享给其他相同的微服务

    通常,多个相同的微服务器,它们的appsettings.json配置文件的内容都是一样的,如果,每次修改配置文件,都要逐个替换,那就太繁琐了,我们可以利用网关的文件共享功能,实现配置文件的统一更新。

    网关打开文件共享

    首先,在网关程序的当前目录下,新建一个文件夹shares

    然后编辑网关的appsettings.json,增加一项ShareFolder,指定./shares问共享文件目录

     

     重启网关程序

    在shares文件夹里面,新建一个Helloworld.json文件

     内容如下:

    {
        "port" : 7902
    }

    微服务实时同步更新appsettings.json

    MyHelloworldService项目引用 Microsoft.Extensions.Configuration.Json nuget包

    打开Program.cs文件,代码改为这样:

    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 方法实现了实时同步更新的功能。

     上一篇 示例(三)    下一篇 示例(五)token

  • 相关阅读:
    剑指Offer--反转链表
    剑指Offer--链表中倒数第k个结点
    面向对象的六原则一法则
    常见错误汇总
    记人生第一次CF体验
    Game of Credit Cards
    Shell Game (模拟)
    数列分块入门 1 LibreOJ
    范德蒙恒等式
    C. Vasya and String (尺取法)
  • 原文地址:https://www.cnblogs.com/IWings/p/13360718.html
Copyright © 2011-2022 走看看