Bus消息总线



可以和消息队列(rabbitmq或kafuf)整合

安装rabbitmq

可以查看我的这篇文章rabbitmq入门

springcloud 全局广播通知

  1. 先安装3355的客户端配置在配置一个3366的客户端

直接通知configServer服务中心,让所有从此获取config的微服务都得到通知

  1. 服务端添加消息总线的支持
    pom
    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    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
    30
    31
    32
    33
    34
    35
    36
    37
    server:
    port: 3344

    spring:
    application:
    name: cloud-config-center # 注册进Eureka服务器的微服务名
    cloud:
    config:
    server:
    git:
    uri: https://gitee.com/zfx-t/springcloud-config.git
    search-paths:
    - springcloud-config

    #### 搜索目录
    label: master

    rabbitmq:
    host: localhost
    port: 5672
    username: admin
    password: 123
    ## rabbitmq相关配置,暴爵bus刷断配置的端点
    management:
    endpoints: #暴露bus刷断配置的端,点
    web:
    exposure:
    include: 'bus-refresh'


    eureka:
    client:
    service-url:
    defaultZone: http://localhost:7001/eureka



  2. 客户端添加总线支持
    pom
    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    yml:
    1
    2
    3
    4
    5
    6
    7
    # 添加rabbitmq配置
    在spring下面:
    rabbitmq:
    host: localhost
    port: 5672
    username: admin
    password: 123

此时已经配置完成,只需要修改配置后,运维工程师向3344发送一个refresh请求,就会让所有的子微服务得到刷新
curl -X POST http://localhost:3344/actuator/bus-refresh

定点通知,只通知一个服务更新,其他的不更新


通知单个微服务,然后广播其他微服务程序(不建议这样使用,会增加每个微服务的职责,还需要额外的消息通知功能)