通常,多个相同的微服务器,它们的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

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

  1. 循序渐进学.Net Core Web Api开发系列【6】:配置文件appsettings.json

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.本篇概述 本篇描 ...

  2. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  3. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  4. .net core 读取、修改配置文件appsettings.json

    .net core 设置读取JSON配置文件 appsettings.json Startup.cs 中 public class Startup { public Startup(IHostingE ...

  5. asp.net core mvc 读取配置文件appsettings.json

    上一篇我们将了读取自定义配置文件.这篇我们讲一下asp.net core mvc里读取自带的配置文件 appsettings.json 首先创建个asp.net core mvc项目,项目里有Prog ...

  6. JMS微服务开发示例(一)Hello world

    网关部署 1.在网关服务器上,安装.net core 3.1运行环境: 2.到 https://www.cnblogs.com/IWings/p/13354541.html 下载Gateway.zip ...

  7. Agile.Net 组件式开发平台 - 服务开发示例

    在上一篇文章中已经讲解了组件的开发,这篇文章讲解平台服务开发. Agile.Net开发管理平台项目,已经托管在开源中国码云平台(http://git.oschina.net) 登陆码云平台进入项目主页 ...

  8. 每天记录一点:NetCore获得配置文件 appsettings.json

    用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如SqlSugar,NH,Dapper等,在读取连接字符串的时候,往往把信息保存到一 ...

  9. .NET Core在类库中读取配置文件appsettings.json

    在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别 ...

  10. ASP.NET Core 类库中取读配置文件 appsettings.json

    首先引用NuGet包 Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.Json Microsoft.Exte ...

随机推荐

  1. 超轻量级MP4封装方法介绍

    liwen01 2023.12.17 前言 MP4是目前非常常用的一种视频封装格式,关于MP4的介绍资料也非常多.我们常用的封装库或工具有:ffmpeg,libmp4v2,GPAC,MP4.js,它们 ...

  2. keycloak~从login-status-iframe页面总结如何跨域传值~续

    keycloak~从login-status-iframe相关文章,可阅读我的这两篇keycloak~从login-status-iframe页面总结如何跨域传值,keycloak~对接login-s ...

  3. 使用dtd定义属性

  4. Linux 485驱动通信异常

    背景 前段时间接到一个项目,要求用主控用485和MCU通信.将代码调试好之后,验证没问题就发给测试了.测试测的也没问题. 但是,到设备量产时,发现有几台设备功能异常.将设备拿回来排查,发现是485通信 ...

  5. springmvc内嵌tomcat、tomcat整合springmvc、自研国产web中间件

    springmvc内嵌tomcat.tomcat整合springmvc.自研国产web中间件 这是由于公司老项目转化springboot存在太多坑,特别是hibernate事务一条就坑到跑路,你又不想 ...

  6. ubuntu 之 安装mysql8

    安装 1 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb 2 sudo apt-get update sudo apt ...

  7. 如何利用动态配置中心在JavaAgent中实现微服务的多样化治理

    本文分享自华为云社区<如何利用动态配置中心在JavaAgent中实现微服务的多样化治理>,作者:华为云开源 . 一.前言 随着JavaAgent在微服务治理方面的广泛应用和发展,我们可以在 ...

  8. 语音识别端到端模型解读:FSMN及其变体模型

    摘要:在很长一段时间内,语音识别领域最常用的模型是GMM-HMM.但近年来随着深度学习的发展,出现了越来越多基于神经网络的语音识别模型. 一.概述 在很长一段时间内,语音识别领域最常用的模型是GMM- ...

  9. 你的Parquet该升级了:IOException: totalValueCount == 0问题定位之旅

    摘要:使用Spark SQL进行ETL任务,在读取某张表的时候报错:"IOException: totalValueCount == 0",但该表在写入时,并没有什么异常. 本文分 ...

  10. SDK设计与封装:从基础概念入门到架构设计落地笔记

    什么是 SDK? SDK 全称 Software Development Kit,广义上的 SDK 是为特定的软件包.软件框架.硬件平台.操作系统等建立应用程序时所使用的开发工具的集合(在 iOS 项 ...