idea中springcloud的config无法bus动态刷新

林子一 2021-02-20 01:54:28
调试好长时间了,重启服务读取配置没问题,bus动态刷新始终无法获取修改后的参数,不知道问题出现在什么地方
环境如下:
win7的32位操作系统,安装IntelliJ IDEA 2018.2.5,JAVA是1.8.0_191,spring boot是2.1.4.RELEASE,
spring cloud是Greenwich.SR1,Erlang是10.7,RabbitMQ是3.8.3(好像高版本的32位操作系统装不上去)
SoapUI采用5.1.3POST刷新配置数据
---主要配置代码如下---
eureka注册服务采用默认配置
server.port=8005
spring.application.name=RegEurekaServer
eureka.instance.hostname=RegSer1
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=192.168.1.11
eureka.instance.instance-id=${eureka.instance.ip-address}:${server.port}
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.prefer-same-zone-eureka=true
eureka.client.service-url.defaultZone=http://192.168.1.11:8005/eureka/
========配置服务端=======
-----pom.xml----
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.yncx.libin</groupId>
<artifactId>configserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>configserver</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!--添加单元测试的依赖-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</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>

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

</dependencies>
-----属性文件---
server.port=9005
spring.application.name=config-server
eureka.client.service-url.defaultZone=http://192.168.1.11:8005/eureka/
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=classpath:config/
spring.rabbitmq.host=192.168.1.11
spring.rabbitmq.port=5672
spring.rabbitmq.username=abcd
spring.rabbitmq.password=abcd123 ==>在rabbitmq中已建立用户和密码并赋予管理员权限
spring.rabbitmq.virtual-host=/

spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.template.mandatory=true

spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true

management.endpoints.web.exposure.include=*
management.server.port=9005
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=192.168.1.11
eureka.instance.hostname=CfgSer01
eureka.instance.instance-id=${eureka.instance.ip-address}:${server.port}
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.prefer-same-zone-eureka=true
-----配置文件--在config文件夹下-
ConfigTest-dev.properties 里面内容 a.address=yundev
====配置客户端pom.xml====
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.yncx.libin</groupId>
<artifactId>configclient</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>configclient</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加单元测试的依赖-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>

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

<!--自动刷新修改后的数据的依赖,客户端在网址映射的JAVA文件中加入@RefreshScope-->
<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>
</dependencies>
------application.properties----
server.port=9006
spring.application.name=ConfClient
------bootstrap.properties------
spring.cloud.config.name=ConfigTest
spring.profiles.active=dev
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.discovery.enabled=true
spring.cloud.config.fail-fast=true
spring.cloud.config.discovery.serviceId=config-server
#设置关闭安全限制
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=192.168.1.11
eureka.instance.hostname=CfgClient01
eureka.instance.instance-id=${eureka.instance.ip-address}:${server.port}
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.prefer-same-zone-eureka=true
eureka.client.service-url.defaultZone=http://192.168.1.11:8005/eureka/
##消息代理地址RabbitMq的地址、端口,用户名、密码
management.endpoints.web.exposure.include=*
spring.rabbitmq.host=192.168.1.11
spring.rabbitmq.port=5672
spring.rabbitmq.username=abcd
spring.rabbitmq.password=abcd123
--------ConfigclientApplication.java------
package com.yncx.libin.configclient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@EnableEurekaClient//声明此处是Eureka客户端
@SpringBootApplication
@RefreshScope
@RestController
public class ConfigclientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigclientApplication.class, args);
System.out.println("配置中心客户端启动成功!");
}
@Value("${a.address}")
private String address;
/*** 访问首页*/
@GetMapping("/index")
public String index() {
return "hello springboot!xxx:" + address;
}
}
----------------
在idea中http://localhost:9006/index 能读取到配置信息后,把ConfigTest-dev.properties 里面内容 a.address内容修改保存后
采用SoapUI 进行http://localhost:9005/actuator/bus-refresh的JSON及post网址数据提交,
rabbitmq运行正常,能读取到消息队列,但是再次打开刷新http://localhost:9006/index后数据依然不变,是怎么回事?
看了好多教程配置基本是这样操作啊
...全文
1238 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
林子一 2021-02-22
  • 打赏
  • 举报
回复
百度查询了下Keys refreshed []为空,我的属性值已经修改并保存,可是明显数值没有得到更新,这是为什么?
林子一 2021-02-20
  • 打赏
  • 举报
回复
idea控制台提示已经Received remote refresh request. Keys refreshed [],但是修改保存后的配置信息仍然更新不了

24,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧