Я пытаюсь использовать 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
Это yml-файлы для одного из моих Miscroservices и его файла свойств соответственно
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 для обновления этих внешних данных.