config server를 사용할 때 깃을 사용해서 각 서버의 설정을 관리 할 수 있다.
하지만 개발 시 서버의 설정을 변경하도 깃에 push를 해야하는 번거러운이 있다.
그래서 개발시에는 로컬에서 파일을 관리하고 배포시에는 깃을 사용할려고 한다.
컨피그 서버의 로컬의 파일을 관리할때 native 프로파이을 사용한다.
spring:
config:
server:
native:
search-locations: classpath:/config-repo
이렇게 사용할 수 가 있다.
그런데 Cloud Bus와 카프카를 사용해서 설정 업데이트를 적용해 봤다.
설정을 변경하고
POST http://localhost:9000/actuator/busrefresh
를 요청을하면 다음 같이 작동한다.
1. 컨피그 서버에서 RefreshRemoteApplicationEvent 메세지를 생성해서 카프카의 큐에 저장한다.
2. 큐를 구독하는 서비스가 있다. 각 마이크로 서비스와 컨피그 서버도 큐를 구독한다. 그럼 먼저 컨피그 서버가 큐의 메세지를 가져와 설정을 업데이트한다.
3. 또한 다른 마이크로 서비스가 큐를 가져가 컨피그서버에 설정을 요청해서 설정을 업데이트한다.
설정 파일을 변경을 하고
/actuator/busrefresh
요청을 하더라도 Cloud Bus는 로컬에 있는 설정 파이을 변경을 인식을 못한다.
그래서 서버를 재시작하고 /actuator/busrefresh 요청을 해야한다.
/actuator/busrefresh를 요청을 하면 컨피그 서버가 깃에서 새로운 설정을 가져와 업데이트학고 다음르로 각 마이크로 서비스가 이설정을 가져사 적용한다.