欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud学习笔记-自动刷新配置-SpringCloud-Bus(消息总线)

程序员文章站 2022-07-13 08:39:12
...

SpringCloud学习笔记-自动刷新配置-SpringCloud-Bus(消息总线)

如果修改配置后,config-server通知order修改配置。

消息队列(RabbitMQ)

Bus 用来操作消息队列。

SpringCloud学习笔记-自动刷新配置-SpringCloud-Bus(消息总线)

第一步添加依赖(config-server)
 

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

spring-cloud-starter-bus-kafka    这是kafka的依赖,上面的是RabbitMq的依赖

说明:https://blog.csdn.net/jack281706/article/details/73742522

第二步添加配置(config-server)

management:
  endpoints:
    web:
      exposure:
        include: bus-refresh   #include: "*"   #这个也可以 

SpringCloud学习笔记-自动刷新配置-SpringCloud-Bus(消息总线)

需要注意的是 springboot2.0于1.5的配置不一样。

我之前的配置是这样的,访问 http://localhost:8066/actuator/bus-refresh 但是实现不了自动刷新,修改为上面的就可以了

management:
  endpoints:
    web:
      exposure:
        exclude: "*"

说明:https://ask.csdn.net/questions/684123

第三步下载安装RabbitMQ

(自己下载安装,需要下载erlang 语言包配置环境变量)

安装链接:http://blog.csdn.net/hzw19920329/article/details/53156015

第四步给eureka-client服务(order)添加依赖

<!--bus 自动刷新配置-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-amqp</artifactId>
		</dependency>

第五步给需要获取配置的文件上加注解

@RefreshScope
@Configuration
@ConfigurationProperties("XXXXX")
package com.hx.order.controller;

import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/env")
@RefreshScope
public class EnvController {

    @org.springframework.beans.factory.annotation.Value("${env}")
    private String env;

    @GetMapping("/print")
    public String print(){
        return env;
    }

}

重启congfig-server 与  order  服务。
在git上面修改配置文件。访问http://localhost:8066/actuator/bus-refresh

就可以重新刷新配置文件。

可以在github上班的WebHooks  上面配置 http://外网地址/actuator/bus-refresh   

Content-Type:application/json

但是码云上面配置WebHooks   就会发生错误:

 Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
 at [Source: (PushbackInputStream); line: 1, column: 366] (through reference chain: java.util.LinkedHashMap["commits"])]

因为它不能配置Content-Type:application/json。

但是我改成自己的gitlab的时候重启config-server和order服务的时候出现下面错误。

unable to find valid certification path to requested target

解决方案:https://blog.csdn.net/qq_40680190/article/details/90106933

就这样就解决的报错的问题,因为在gitLab上面没有找到WebHooks,也就没有配置。它也实现了自动刷新配置。