springCloud - 第9篇 - 同步配置文件(消息总线方式)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

一、 微服务系统中有多个服务应用,也会有多个配置文件。此时也可用 springcloud bus 来实现对配置文件的管理。

PS:rabbitmq的安装见文章:Docker 方式安装 RabbitMQ(ribbitmq linux 部署)

二、springcloud bus 的使用

1. 修改 config-client 工程。修改 pom、启动类、配置。

1.1 在 pom 中加入依赖:

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

几经测试,父级 pom 使用 2.1.6 始终不成功。故换为 2.0.3 版本。运行成功。完整 pom 如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.config</groupId><artifactId>config-client</artifactId><version>0.0.1-SNAPSHOT</version><name>config-client</name><description>配置文件管理 client</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--消息总线--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--注册服务到 注册中心,作为 Eureka 客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

1.2 启动类中加上 注解:@RefreshScope 。刷新配置文件 。

完整启动类:

package com.config.configclient;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@SpringBootApplication// 刷新配置
@RefreshScope
public class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class, args);}@Value("${version}")String version;@RequestMapping(value = "/getVersion")public String getVersion() {return version;}/*** 增加此方法用以解决报错:Could not resolve placeholder 'version' in value "${version}"* @return*/@Beanpublic static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();c.setIgnoreUnresolvablePlaceholders(true);return c;}}

1.3 配置文件调整为2份: application.properties 、bootstrap.properties 。分别配置不同内容。

bootstrap.properties:

# 项目名
spring.application.name=config-client# 端口
server.port=4445# 指定远程仓库分支
spring.cloud.config.label=master# 读取文件:dev开发环境、test测试、pro生产
spring.cloud.config.profile=dev# 配置文件管理中心 config-server 地址
# 配置中心-集群模式时不使用 ip方式
# spring.cloud.config.uri=http://localhost:3333/# 配置中心-集群模式 start -----------------# 注册中心 - 端口: 1234、工程名: eureka (见 eureka 工程中配置)。
eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/# 从配置中心读取文件
spring.cloud.config.discovery.enabled=true# 配置文件管理中心(服务名) :config-server
spring.cloud.config.discovery.serviceId=config-server# 配置中心-集群模式 end -----------------

 application.properties:

# rabbitmq 心跳检查
eureka.client.healthcheck.enabled=true# rabbitmq 服务所在ip
spring.rabbitmq.host=ergouzi.fun# rabbitmq 端口
spring.rabbitmq.port=5672# rabbitmq 账号
spring.rabbitmq.username=jiangyu# rabbitmq 密码
spring.rabbitmq.password=loveU# 消息总线相关
spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true
management.endpoints.web.exposure.include=bus-refresh

2. 启动 eureka 、config-server。

3. 分不同端口号启动 2 个 config-client :(端口号为 4444、4445)

eureka  中注册服务为:

4.  确认配置文件内容为:

5. 分别请求 4444 和 4445:

 

6. 以往,配置文件更新后,需要重启工程才会读取到最新的配置内容。

使用消息总线 则只需要向任意一个 config-client 发送一个更新配置信息的 post 类型提示请求便可。

请求 URL 为:http://localhost:4444/actuator/bus-refresh ,返回状态码 204 ,表示请求成功,服务端无内容返回。

此时,更新配置文件流程是:

1)前提:不同 config-server、config-client 向 eureka 注册。

2)远程配置文件更新。

3)接口向任意一个 config-client 发起请求:http://localhost:4444/actuator/bus-refresh ,表示更新配置。

4) config-client 收到请求并发起消息到消息总线。

5)消息总线向其它应用服务传递最新配置信息内容,整个系统配置文件更新完成。 

-------------------------------------------------------------

下一篇:springCloud - 第10篇 - 服务间调用追踪 (zipkin 的使用)

源码见:

https://gitee.com/FJ_WoMenDeShiJie/springcloud-base

https://gitee.com/FJ_WoMenDeShiJie/springcloud-config-server

https://gitee.com/FJ_WoMenDeShiJie/springcloud-config-client

-------------------------------------------------------------

PS:这个系列不定时更新,只是个人的学习分享,

内容全程参考书目:

《Spring Cloud 与 Docker 微服务架构空实战 》、

《Spring Cloud 微服务实战》、

《深入理解 Spring Cloud 与微服务构建》、

及大神博客:https://blog.csdn.net/forezp/article/details/70148833
----------------------------------------------------------------
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 方式安装 zipkin (linux 、阿里云ECS上安装)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 查镜像&#xff1a; docker search zipkin2. 拉取镜像&#xff1a;&#xff08;不写明版本号时&#xff0c;默认使用最新版本&#…

springCloud - 第10篇 - 服务间调用追踪 (zipkin 的使用)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、 在微服务系统中&#xff0c;不同应用服务可能会有各种不同的相互调用 。 springcloud 集成了 zipkin 来实现对于不同服务调用的追踪…

广东48.6万人资产超600万 华东超600万人群最多

中国有290万人资产超600万元 6.7万人资产过亿 个人资产600万元以上有290万人 亿万资产以上的人有6.7万人 胡润研究院昨天发布的《2014中国高净值人群心灵投资白皮书》&#xff08;以下简称《白皮书》&#xff09;显示&#xff0c;截至2013年年底&#xff0c;全国个人资产600…

Idea 同一工程根据不同配置文件启动、idea 同一工程多实例同时运行

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、需求&#xff1a;有一个 eureka 工程&#xff0c;有2个配置文件。需要根据不同的配置文件启动 2 次&#xff0c;并保证 2 个实例同时…

H.265:网络视频的高清时代

HEVC/H.265标准LOGO 去年八月&#xff0c;爱立信公司推出了首款H.265编解码器&#xff0c;而在仅仅六个月之后&#xff0c;国际电联&#xff08;ITU&#xff09;就正式批准通过了HEVC/H.265标准&#xff0c;标准全称为高效视频编码&#xff08;High Efficiency Video Coding&am…

springCloud - 第11篇 - Eureka 注册中心集群的实现

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 eureka 作为整个微服务项目的注册中心&#xff0c;到目前为止&#xff0c;在我的系统中一直是单节点的&#xff0c;这样并不能作到高可用…

Idea 插件 lombok 的安装和使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 C#在写一个实体类时&#xff0c;有属性的写法&#xff0c;省去了写getter和setter的麻烦。 在Java编程时&#xff0c;写完字段后&#x…

主宰全球的10大算法

摘要&#xff1a;Reddit有篇帖子介绍了算法对我们现在生活的重要性&#xff0c;以及哪些算法对现代文明所做贡献最大&#xff0c;一起来看下。 【编者按】Reddit有篇帖子介绍了算法对我们现在生活的重要性&#xff0c;以及哪些算法对现代文明所做贡献最大。这个表单并不完整&a…

企业贡献开源,其背后的战略动机是什么?

本文作者Balaji Viswanathan通过对Google、Apple、Facebook、Android、Openstack项目等案例进行分析&#xff0c;总结了企业在开源上的战略性选择&#xff0c;是很有可能帮助企业战胜对手的绝好手段。大多数公司通过使用开源软件获得了很多竞争上的优势&#xff0c;这一点毋庸置…

解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 报错如下&#xff1a; [ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective setting…

贡献开源项目没那么简单,你要负责到底

贡献开源项目不是一件简单的事&#xff0c;不是说上传项目到Github或类似的网站&#xff0c;就万事大吉了&#xff0c;更不能认为你的项目代码现在已经开源了。还有很多事情要跟进完善。也就是说你要对这个项目负责到底。从长远角度来看&#xff0c;开源贡献必须是一条双行道。…

mybatis show sql 打印 SQL 语句到控制台

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 方法一&#xff1a; 即&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuratio…

解决:Throwable:Stub index points to a file without PSI: com.intellij.openapi.fileTypes.UnknownFileType

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. IDEA 报错&#xff1a;stub index point to a file without PSI 并且IDEA 中左边栏部分内容不断刷新&#xff0c;死循环一般的闪 .…

解决:Truncated incorrect DOUBLE value: xxxX-1‘

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 运行 sql 报错&#xff0c;如题&#xff1a; Truncated incorrect DOUBLE value: XXxX-1 2. 原因&#xff1a;字串要加引号&…

IDEA 中的.iml文件和.idea文件夹 ( 隐藏方式 )

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 初次使用IDEA&#xff0c;创建一个maven工程&#xff0c;发现在目录结构中产生了两个不一样的东西&#xff1a;.iml 文件和 .idea 文件夹…

springCloud - 第12篇 - 服务监控 Hystrix 面板

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前面有用过 Hystrix 熔断&#xff0c;在多服务运行时。可以通过 Hystrix 的监控面板来实时观察各个服务的运行健康、效率和请求量等。 …

专访Google数据科学家彭晨:大数据成为潮流走近各行各业!

摘要&#xff1a;在“2014中美大数据研讨会”开始之前&#xff0c;CSDN采访了谷歌公司数据科学家彭晨&#xff0c;他表示之所以“大数据”火&#xff0c;是因为人类第一次可以精确的、系统的、实时的、全方位的、永久的获取、记录、分析、并保存海量的数据。 端午节后6月6日&a…

解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 场景&#xff0c;springcloud 学习工程中&#xff0c;把 feign 和 ribbon 工程 作为应用服务&#xff0c;纳入 hystrix-turbine 服务…

解决:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused:

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 场景&#xff1a;启动一个需要注册到 eureka 注册中心的服务 seeParam 报错&#xff1a; com.sun.jersey.api.client.ClientHandle…

springCloud - 第13篇 - 服务监控 集群模式 Hystrix-turbine

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 在springcloud 体系中&#xff0c;可以用 hystrix-dashboard 实时监控服务的运行状态。上一文记录了单实例的监控&#xff0c;现在实…