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

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

网关打开文件共享

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

 

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

 

 

 重启网关程序

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

 

 

 内容如下:

{
    "port" : 7902
}

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

MyHelloworldService项目引用 JMS.ShareFileClient   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);
var shareClient = new JMS.ShareFileClient(gateways[0]);
//先从网关下载最新的配置文件到本地 shareClient.GetGatewayShareFile("Helloworld.json", "./appsettings.json"); //映射Helloworld.json到./appsettings.json,这样Helloworld.json只要有更新,就下载覆盖本地appsettings.json shareClient.MapShareFileToLocal("Helloworld.json", "./appsettings.json");
shareClient.StartListen();
//加载本地配置文件 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(); } } }
复制代码

 shareClient.MapShareFileToLocal 方法实现了实时同步更新的功能。

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

posted @   IWing  阅读(660)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示