1. 程式人生 > >spring-cloud Finchley 微服務架構從入門到精通【六】BUS RabbitMQ 配置重新整理

spring-cloud Finchley 微服務架構從入門到精通【六】BUS RabbitMQ 配置重新整理

上篇文章介紹了高可用的配置中心,如何在不重啟伺服器的情況下對配置檔案進行更新呢?請看下面的介紹

一、安裝rabbitMq

1、下載地址

2、執行

這裡寫圖片描述

3、cloud整合配置說明

  • 預設埠: 5672

  • 預設使用者名稱:guest

  • 預設密碼:guest

二、程式碼實現

1、新增依賴

config 服務端:commonservice-config 新增如下依賴:

            <dependency>
                <groupId>org.springframework.boot</groupId
>
<artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

在config 客戶端:bussnessservice-user新增

        <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.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>

2、修改配置

修改兩個專案的yml檔案,加入以下配置:

spring:
  rabbitmq: 
    host: localhost
    port: 5672
    username: guest
    password: guest
management: 
  endpoints:
    web:
      exposure: 
        include: "*"
      cors:
        allowed-origins: "*"
        allowed-methods: "*" 

配置說明:

  • rabbitmq配置

  • 預設關閉了bus請求url,因此需要開啟才能使用

在客戶端bussnessservice-user的配置檔案中新增一個屬性server.time=update version1,用來測試屬性的變更

3、在需要重新整理配置的類上新增@RefreshScope註解

package com.mayi.springcloud.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 UserManagementController {

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

    @Value("${server.time}")
    String testValue;
    @GetMapping("/listUsers")
    public String ListUsers(){

        /**
         * 模擬從資料庫查詢
         */
        List<Map<String, Object>> users = new ArrayList<Map<String, Object>>();
        for(int i=1; i< 5; i++){
            Map<String, Object> user = new HashMap<String, Object>();
            user.put("id", i);
            user.put("name", "小明" + i);
            users.add(user);
        }
        return "伺服器埠號:   " + serverPort + "   |   使用者資訊:   " + users.toString();
    }

    @GetMapping("/getTestValue")
    public String getTestValue(){
        return testValue;
    }
}

三、測試

依次啟動eureka server、config server 和 config client(啟動兩個埠,以測試批量更新配置檔案)三個專案
啟動配置中心時可以看到如下日誌:

這裡寫圖片描述

  • /actuator/refresh :重新整理單個節點
  • /actuator/bus-refresh: 重新整理所有節點

啟動完成:

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

修改配置檔案:

server:
  port: 8802
  time: update version100

這裡寫圖片描述

這裡寫圖片描述

注意:新增 spring-boot-starter-amqp 依賴有時會報錯,這是因為maven裡面有多個版本,需要刪除,再重新maven - update project

接下來,我會依次更新文章,直至整個架構完成,如有興趣的朋友關注作者 或 加我微信 拉你進入spring cloud社群群

這裡寫圖片描述

微信公眾號:java架構師修行

這裡寫圖片描述

本公眾號將要按照JAVA高階軟體架構師實戰培訓的路線釋出一期完整的架構文章,難度由淺入深,適合有一定開發基礎想轉架構和正在做初級架構開發的人員學習