Spring cloud Bus

概述:
    旨在通过轻量消息代理连接各个分布的节点,建立一个在多个服务之间的通信频道。
    实现方式:通过AMQP消息代理作为通道(Rabbit安装相关详见底部《RabbitMq(window环境)安装相关备注》)。
    例如 SpringCloudConfig,如果多个服务公用一个配置,当配置更改时,此时就需要每个用到的服务都调用 /refresh 接口,
        而这时,bus 组件就可以解决这个问题,无论通知到那个服务,都会通过 bus 通知其他服务,建立多服务之间的通信。
        即:bus 就是为了管理和传播所有分布式项目中的消息

实现
    1、pom.xml
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

    2、bootstrap.yml
        spring:
          cloud:
            config:
              discovery:
                enabled: true
                serviceId: config-server
              profile: dev
              label: master
            bus:
              trace:
                enabled: true #开启消息跟踪

    3、application.yml
        spring:
          application:
            name: girl
          rabbitmq:
            host: 192.168.1.200
            port: 5672
            username: admin
            password: admin
        management:
          security:
            enabled: false #刷新时,关闭安全验证

测试
    1、服务启动,启动日志有:Mapped "{[/bus/refresh],methods=[POST]}" onto public void org.springframework.cloud.bus.endpoint.RefreshBusEndpoint.refresh(java.lang.String)
        即表示当前服务已加入消息总线。
    2、修改配置中心多个服务的配置文件;
    3、访问任意已加入消息总线的服务接口 /bus/refresh
    4、查看加入消息总线中其他服务的配置是否更新,更新即成功

进阶
    通过访问任意一个客户端服务的 /bus/refresh 接口,然后通知其他客户端服务,这种职责不应该由一个客户端来承担,
    所以不应该访问客户端的 /bus/refresh 接口,而是访问 ConfigServer 服务的 /bus/refresh 接口

    ConfigServer项目
        1、pom.xml
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>
        2、application.yml
            spring:
              application:
                name: girl
              rabbitmq:
                host: 192.168.1.200
                port: 5672
                username: admin
                password: admin
            management:
              security:
                enabled: false #刷新时,关闭安全验证




====================== RabbitMq(window环境)安装相关备注 ======================
1、RabbitMq的安装需要Erlang环境(RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器)
    Erlang:一种动态类型的函数式编程语言,由Erlang虚拟机解释执行。
        参考:http://ju.outofmemory.cn/entry/111451
2、命令(在rabbitMq命令窗口):rabbitmqctl status
    确认是否安装成功并正常运行
        注:1.确认是否开启服务;
            2.如果提示错误,参考连接 https://blog.csdn.net/dear_Alice_moon/article/details/79466568
            3.需注意RabbitMq和ActiveMq有一个端口会冲突,导致不能同时使用,解决参考链接 https://blog.csdn.net/pansanday/article/details/78024811
3、正常运行后,可访问web管理页面(http://localhost:15672)
    注:1.如果不能访问,是因为web管理页面是作为一个插件存在,需要开启,执行命令:rabbitmq-plugins enable rabbitmq_management
            参考连接 https://blog.csdn.net/sxf359/article/details/78239382
        2.如果guest帐号密码不能登录,需要注意,因为guest是最高级帐号,所以只允许在localhost下访问使用,否则需要创建账户
            参考链接 https://www.cnblogs.com/mingaixin/p/4134920.html
                     https://blog.csdn.net/zyz511919766/article/details/42292655

 

=========================================================================

参考链接:https://www.cnblogs.com/ityouknow/p/6931958.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值