天天看點

SpringCloud學習筆記11——初級篇之消息總線

九.Bus消息總線

1.知識點

SpringCloud學習筆記11——初級篇之消息總線
SpringCloud學習筆記11——初級篇之消息總線
SpringCloud學習筆記11——初級篇之消息總線

Bus支援兩種消息代理:RabbitMQ和Kafka

2.安裝RabbitMQ

①下載下傳和安裝erlang

點選這裡

SpringCloud學習筆記11——初級篇之消息總線

安裝時正常下一步就行,選D盤

②下載下傳和安裝RabbitMQ

點選這裡

SpringCloud學習筆記11——初級篇之消息總線

選D盤其他下一步。

安裝好了之後進入RabbitMQ下的sbin目錄,打開cmd輸入

rabbitmq-plugins enable rabbitmq_management
           

這樣就行了

SpringCloud學習筆記11——初級篇之消息總線
SpringCloud學習筆記11——初級篇之消息總線

點選start啟動

SpringCloud學習筆記11——初級篇之消息總線

通路15672,預設使用者名密碼是guest

SpringCloud學習筆記11——初級篇之消息總線

登入進來

SpringCloud學習筆記11——初級篇之消息總線

3.SpringCloud Bus動态重新整理全局廣播

①建立module

SpringCloud學習筆記11——初級篇之消息總線

②編寫pom檔案

<dependencies>

        <!-- config -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <!--eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--引入自定義的api通用包  可以使用公用的entities-->
        <dependency>
            <groupId>com.hry.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--監控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--熱部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
           

③修改yml檔案

bootstrap.yml

server:
  port: 3366

spring:
  application:
    name: config-client
  cloud:
    config:
      label: master #分支名稱
      name: config  #配置檔案名稱
      profile: dev  #讀取字尾名稱   三者合一master分支上config-dev.yml的配置檔案被讀取
      uri: http://localhost:3344

#注冊到Eureka
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

#暴露監控端點
management:
  endpoints:
    web:
      exposure:
        include: "*"
           

④建立主啟動類

package com.hry.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ConfigClientMain3366 {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientMain3366.class, args);
    }
}

           

⑤業務代碼

controller

package com.hry.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class ConfigClientController {

    /**
     * 讀取github上的yml檔案的config.info
     */
    @Value("${config.info}")
    private String configInfo;

    @Value("${server.port}")
    private String serverPort;


    @GetMapping("/configInfo")
    public String getConfigInfo(){
        return "serverPort: "+serverPort+"\t\t"+configInfo;
    }
}

           

⑥修改3344的pom檔案

添加坐标

<!--消息總線RabbitMQ支援-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
           

⑦修改3344的yml檔案

在spring中添加配置

spring:
  #15672是web管理界面的端口,5672是MQ通路的端口
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
           

添加配置

#暴露bus重新整理配置的端點
management:
  endpoints:
    web:
      exposure:
        include: "bus-refresh"
           

⑧修改3355和3366的pom和yml

(1)pom

3355和3366都添加如下坐标

<!--消息總線RabbitMQ支援-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
           
(2)yml

3355和3366都在spring下添加配置

spring:
  #15672是web管理界面的端口,5672是MQ通路的端口
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
           

⑨測試

SpringCloud學習筆記11——初級篇之消息總線

檢視目前GitHub上版本為3

SpringCloud學習筆記11——初級篇之消息總線

由于都重新開機過 是以目前44 55 66都是3

SpringCloud學習筆記11——初級篇之消息總線

現在GitHub改成4并送出

SpringCloud學習筆記11——初級篇之消息總線

發送POST

SpringCloud學習筆記11——初級篇之消息總線

實作了一次修改,廣播通知,處處生效,比之前Config好的一點是不用55 66分别發送POST

SpringCloud學習筆記11——初級篇之消息總線

4.SpringCloud Bus動态重新整理定點通知

按需通知,并不是全部都通知。

比如隻通知3355不通知3366

①修改版本号

修改成5并送出

SpringCloud學習筆記11——初級篇之消息總線

②使用curl發送POST

SpringCloud學習筆記11——初級篇之消息總線
SpringCloud學習筆記11——初級篇之消息總線

③測試

SpringCloud學習筆記11——初級篇之消息總線

繼續閱讀