好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SpringCloud Bus 消息总线的具体使用

什么是 消息总线

1. 概念

在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例, 它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线

2. springcloud bus

springcloud中也有对应的解决方案,springcloud bus 将分布式的节点用轻量的消息代理连接起来, 可以很容易搭建消息总线,配合springcloud config 实现微服务应用配置信息的动态更新。

3. 其他

消息代理属于中间件。设计代理的目的就是为了能够从应用程序中传入消息,并执行一些特别的操作。 开源产品很多如activemq、kafka、rabbitmq、rocketmq等 目前springcloud仅支持rabbitmq和kafka。本文采用rabbitmq实现这一功能。

搭建分布式配置中心

1. config 架构

当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。

2. git 环境搭建

使用 码云 环境搭建 git

码云环境地址:   https://gitee测试数据/guopf/springcloud_bus

3. git服务器上传配置文件

命名规范 服务名称-版本.yml 例如configclient_dev.yml

4. 搭建 eureka 服务注册中心

具体搭建环境随后补充,可以使用我自己部署的 http://47.105.86.222:8100 (配置地址http://47.105.86.222:8100/eureka)

5. 搭建 config-server 服务

1. maven 依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<dependencies>

     <!-- springboot整合web组件 -->

     <dependency>

       <groupid>org.springframework.boot</groupid>

       <artifactid>spring-boot-starter-web</artifactid>

     </dependency>

     <!--spring-cloud 整合 config-server -->

     <dependency>

       <groupid>org.springframework.cloud</groupid>

       <artifactid>spring-cloud-config-server</artifactid>

       <version> 2.0 . 2 .release</version>

     </dependency>

 

     <!-- springboot整合eureka客户端 -->

     <dependency>

       <groupid>org.springframework.cloud</groupid>

       <artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>

       <version> 2.0 . 2 .release</version>

     </dependency>

  </dependencies>

2. 配置文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

### 服务地址 端口

server:

  port: 8800

### 服务名称

spring:

  application:

   name: config_server

  cloud:

   config:

    server:

     git:

      ### git 地址

      uri: https: //gitee测试数据/guopf/springcloud_bus.git

      username:

      password:

      ### 配置读取文件夹

      search-paths: config

    ### 分支

    label: master

 

### eureka 配置

eureka:

  client:

   service-url:

    defaultzone: http: //47.105.86.222:8100/eureka

   register-with-eureka: true

   fetch-registry: true

3. 启动

?

1

2

3

4

5

6

7

8

9

10

11

12

13

/**

  * @enableeurekaclient : 开启 eureka 客户端

  * @enableconfigserver : 开启 config 服务端

  *

  */

@springbootapplication

@enableeurekaclient

@enableconfigserver

public class app {

   public static void main(string[] args) {

     springapplication.run(app. class ,args);

   }

}

搭建 config-client 服务

1. 手动更新 

1. maven 依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<dependencies>

   <!-- springboot整合web组件 -->

   <dependency>

     <groupid>org.springframework.boot</groupid>

     <artifactid>spring-boot-starter-web</artifactid>

   </dependency>

   <dependency>

     <groupid>org.springframework.cloud</groupid>

     <artifactid>spring-cloud-config-client</artifactid>

     <version> 2.0 . 2 .release</version>

   </dependency>

   <!-- springboot整合eureka客户端 -->

   <dependency>

     <groupid>org.springframework.cloud</groupid>

     <artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>

     <version> 2.0 . 2 .release</version>

   </dependency>

   <!--核心jar包,集成rabbitmq 消息总线 bus

   <dependency>

     <groupid>org.springframework.cloud</groupid>

     <artifactid>spring-cloud-starter-bus-amqp</artifactid>

   </dependency>

   -->

   <!-- actuator监控中心 -->

   <dependency>

     <groupid>org.springframework.boot</groupid>

     <artifactid>spring-boot-starter-actuator</artifactid>

   </dependency>

 

</dependencies>

2. 配置文件(bootstrap.yml)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

### 端口

server:

  port: 8801

  ### eureka 配置中心

eureka:

  client:

   service-url:

    defaultzone: http: //47.105.86.222:8100/eureka

   fetch-registry: true

   register-with-eureka: true

 

### 配置服务名称,要和config 配置中心文件保持一致

spring:

  application:

   name: configclient

  cloud:

   config:

    ### 读取配置

    profile: dev

    discovery:

     ###

     enabled: true

     ### config 配置中心配置的服务名称

     service-id: config_server

management:

  endpoints:

   web:

    exposure:

     include: "*"

3. 启动

?

1

2

3

4

5

6

7

8

@springbootapplication

@enableeurekaclient

@enablediscoveryclient

public class app {

   public static void main(string[] args) {

     springapplication.run(app. class ,args);

   }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

/**

  * 在读取配置文件信息的地方进行添加 @refreshscope 注解

  */

@restcontroller

@refreshscope

public class appcontroller {

 

   @value ( "${userage}" )

   private string userage;

 

   @getmapping ( "/userage" )

   public string config(){

     system.out.println( "userage : " + userage);

     return userage;

   }

}

修改git仓库中的配置,进行手动更新,post请求

http://127.0.0.1:8801/actuator/refresh  启动刷新器 从cofnig_server读取

2. 使用消息总线 bus 更新

1. 添加依赖信息

在 config_server,config_client 中添加 

?

1

2

3

4

5

6

7

8

9

<dependency>

   <groupid>org.springframework.cloud</groupid>

   <artifactid>spring-cloud-starter-bus-amqp</artifactid>

</dependency>

<!-- actuator监控中心 -->

<dependency>

   <groupid>org.springframework.boot</groupid>

   <artifactid>spring-boot-starter-actuator</artifactid>

</dependency>

2. 配置文件修改

添加对 rabbbitmq的配置, rabbitmq服务和config_server,config_client 在一个服务器上,使用默认配置即可

?

1

2

3

4

5

6

7

### rabbitmq 配置信息

  rabbitmq:

   addresses: 47.105 . 86.222

   username: guest

   password: guest

   port: 5672

   virtual-host: /

3. 刷新

http://127.0.0.1:8801/actuator/bus-refresh   post方式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://segmentfault测试数据/a/1190000017391824

查看更多关于SpringCloud Bus 消息总线的具体使用的详细内容...

  阅读:18次