我正在尝试在我的微服务应用程序中将 Spring Cloud Bus 与 Kafka 一起使用,实际上我可以使用它,但只有由 Spring Cloud 配置服务器控制的数据才会被刷新!
我在我的配置服务器上使用 jdbc 后端,为了模拟我的需要,我在属性表旁边的一项服务中更改属性文件中的一些值,并再次调用/monintor端点(这里提到第 4.3 节https://www.baeldung.com/spring-cloud-bus);结果,只有来自属性表的数据被更改。
这是我的配置服务器的 yml 文件
spring:
cloud:
config:
server:
jdbc:
sql: SELECT KEY,VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?
order: 1
stream:
kafka:
binder:
brokers: localhost:9092
datasource:
url: jdbc:mysql://localhost:3306/sweprofile?zeroDateTimeBehavior=convertToNull
username: 123
password: 123ertbnm
hikari:
maximum-pool-size: 10
connection-timeout: 5000
profiles:
active:
- jdbc
application:
name: configServer
这些分别是我的一个 Miscroservices 及其属性文件的 yml 文件
spring:
datasource:
username: 123
password: 123ertbnm
url: jdbc:mysql://localhost:3306/sweprofile?zeroDateTimeBehavior=convertToNull
jpa:
properties:
hibernate:
format_sql: true
ddl-auto: none
application:
name: auth-service
cloud:
config:
discovery:
enabled: true
service-id: configServer
bus:
refresh:
enabled: true
profiles:
active: jdbc
management:
endpoints:
web:
exposure:
include: ["health","info","refresh", "bus-refresh"]
# This line is dummy data for testing purpose
ali.man = " Ola 12333"
这是来自休息控制器的快照
@RestController
@RequestMapping("/user")
@RefreshScope
public class AuthController {
private UserAuthService userAuthService;
@Value("${name}")
private String name; // changed normally
// Calling the key value mentioned in properties file after changing
@Value("${ali.man}")
private String k; // -> not changed
public AuthController(UserAuthService userAuthService) {
this.userAuthService = userAuthService;
}
@GetMapping("authTest")
public String getAuth() {
return name + k;
}
}
我错过了什么?为什么属性文件中的值没有改变?希望我可以使用 Spring Cloud Bus 和 Kafka 来刷新这些外部数据。