SpringCloud笔记九:微服务消息总线Bus结合消息队列RabbitMQ

SpringCloud笔记九:微服务消息总线Bus结合消息队列RabbitMQ

文章目录

      • SpringCloud笔记九:微服务消息总线Bus结合消息队列RabbitMQ
        • 消息总线介绍和使用场景
        • 消息队列RabbitMQ
        • 使用Docker安装RabbitMQ
        • 消息总线整合配置中心
        • 总结客户端保留配置和需要引入的依赖。

消息总线介绍和使用场景

  1. 配置中心问题

将配置中心存放到git仓库里面,好处有很多,但是仍然没有解决一个问题,当我们将系统部署以后,如果想修改配置里面的内容,如何在不重启的情况下仍然能应用新增的内容。显然这个问题没有实际的解决,那么配置中心几乎毫无意义。

消息总线就是为了解决这个问题的。

  1. 什么是消息

一个事件,需要广播或者单独传递给某个接口。

消息队列就是当有消息时,通知大家或相应人员,当相应人员接收到消息后就主动做对应动作。

消息队列RabbitMQ

  1. 参考文档

消息队列

  1. RabbitMQ文档

官方文档

中文文档

使用Docker安装RabbitMQ

  1. 拉取镜像

docker pull rabbitmq:management

  1. 查看当前镜像列表

docker images

  1. 删除指定镜像

docker rmi IMAGE_ID (如果需要强制删除加 -f)

  1. 创建容器

docker run -d --name “myrabbitmq” -p 5672:5672 -p 15672:15672 rabbitmq:management

参数讲解:
run: 创建一个新的容器并运行一个命令
-d: 后台运行容器,并返回容器ID
-p: 端口映射,格式为:主机(宿主)端口:容器端口
–name=“rabbitmq”: 为容器指定一个名称

  1. RabbitMQ默认创建了一个 guest 用户,密码也是 guest, 如果访问不了记得查看防火墙,端口或者云服务器的安全组
    管理后台:http://127.0.0.1:15672
  2. 其他安装方式

Linux安装

windows安装

参考资料

消息总线整合配置中心

  1. 启动rabbitmq

docker run -d --name “rabbitmq” -p 5672:5672 -p 15672:15672 rabbitmq:management

rabbitmq默认使用5672端口

  1. config-client添加依赖


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-bus-amqpartifactId>
dependency>
  1. 官方文档

官方文档

  1. 添加暴露端点配置

暴露全部监控信息

management:
  endpoints:
    web:
      exposure:
        include: "*"
  1. 添加rabbitmq配置
spring:
  application:
    name: product-service
  output:
    ansi:
      enabled: ALWAYS
  zipkin:
    base-url: http://47.105.176.159:9411/
  sleuth:
    sampler:
      probability: 1
  cloud:
    config:
      discovery:
        service-id: CONFIG-SERVER
        enabled: true
      profile: test
      label: test
  rabbitmq:
    host: 47.xxx.176.xxx
    port: 5672
    username: guest
    password: guest
  1. 需要刷新配置的地方需要添加注解

@RefreshScope

  1. 手动刷新配置,post方式,可以用postmen

http://localhost:8773/actuator/bus-refresh

动态刷新配置,在开发和测试环境使用,尽量少在生产环境使用。

  1. 要将application.yml修改为bootstrap.yml。否则不会成功。

  2. 配置中心架构图

SpringCloud笔记九:微服务消息总线Bus结合消息队列RabbitMQ_第1张图片

1、发送post请求,用于更新配置refresh

2、server端接收到请求并发送给Spring Cloud Bus,总线会优先将消息推送到rabbitmq,或者kafka

3、rabbitmq会通过广播的方式推送给各个server端。

4、其他端获取到消息后,会请求配置端,申请获取最新配置。

5、配置中心通过git重新拉取配置

这里的rabbitmq的主要功能就是起到一个广播,通知其他客户端的作用,并没有传递什么配置信息。

总结客户端保留配置和需要引入的依赖。

  1. 需要引入的依赖

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-config-clientartifactId>
dependency>



<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-bus-amqpartifactId>
dependency>
  1. git中新增配置信息
#服务的名称
spring:
  rabbitmq:
    host: 47.105.176.159
    port: 5672
    username: guest
    password: guest

#暴露全部的监控信息
management:
  endpoints:
    web:
      exposure:
        include: "*"
  1. 将application.properties修改为bootstrap.yml,并添加配置信息
#服务的名称
spring:
  application:
    name: product-service
   #指定从哪个配置中心读取
  cloud:
    config:
      discovery:
        service-id: CONFIG-SERVER
        enabled: true
      profile: dev
      label: master
#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  1. 各个项目启动顺序

1、注册中心

2、配置中心

3、对应的服务,

4、启动网关

你可能感兴趣的:(springCloud笔记,微服务bus总线)