spring-cloud Finchley 微服务架构从入门到精通【六】BUS RabbitMQ 配置刷新

上篇文章介绍了高可用的配置中心,如何在不重启服务器的情况下对配置文件进行更新呢?请看下面的介绍
##一、安装rabbitMq ##
###1、下载地址###
http://www.rabbitmq.com/download.html
###2、运行###
输入http://localhost:15672,出下以下界面,说明安装成功

这里写图片描述

###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: 刷新所有节点

启动完成:

这里写图片描述

使用postman测试:
发送Post请求 http://localhost:8801/getTestValuehttp://localhost:8802/getTestValue

这里写图片描述

这里写图片描述

修改配置文件:

server:
  port: 8802
  time: update version100

发送post请求 http://localhost:8801/actuator/bus-refresh

这里写图片描述

这里写图片描述

注意:添加 spring-boot-starter-amqp 依赖有时会报错,这是因为maven里面有多个版本,需要删除,再重新maven - update project

github: https://github.com/tianyana/springcloud

接下来,我会依次更新文章,直至整个架构完成,如有兴趣的朋友关注作者 或 加我微信 拉你进入spring cloud社区群

这里写图片描述

微信公众号:java架构师修行

这里写图片描述

本公众号将要按照JAVA高级软件架构师实战培训的路线发布一期完整的架构文章,难度由浅入深,适合有一定开发基础想转架构和正在做初级架构开发的人员学习

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值