이번에 작성할 주제는 저번 [공부정리] Spring Actuator 사용하기의 이어서 Spring Actuator를 이용하여 bus-refresh를 구현하는 방법에 대해서 다룰 예정이다.
변경된 환경설정 정보를 다시 적용시키기 위해서는 각각의 Config Client 인스턴스들에게 각각 Actuator의 /refresh를 호출을 해줘야한다는 단점을 해결하기 위해서 등장하였다.
사진에서 볼 수 있듯이 Spring Cloud Bus를 통해서 하나의 메시지 브로커에 모든 인스턴스들을 연결해서 해결할 수가 있다. 자세한 내용은 아래 블로그의 내용을 참고하는 것을 추천한다.
https://blog.eomdev.com/springcloud/2019/04/01/Spring-Cloud-Bus.html
또한 공식 문서에서 전반적인 내용을 알 수 있다.
https://docs.spring.io/spring-cloud-bus/docs/current/reference/html/
RabbitMQ를 이용하여 적용하는 방법은 간단하다. 공식 문서에서 RabbitMQ를 사용하는 방법을 제공해주고 있으니 참고하여 적용하면 된다.
spring:
rabbitmq:
host: mybroker.com
port: 5672
username: user
password: secret
management:
endpoints:
web:
exposure:
include: refresh, health, beans, httptrace, busrefresh
When running on localhost, you need not do anything. If you run remotely, use Spring Cloud Connectors or Spring Boot conventions to define the broker credentials, as shown in the following example for Rabbit:
마찬가지로, Kafka를 이용해서도 간단하게 적용할 수 있다. Kafka에 대한 내용은 아래 블로그 내용을 참고하는 것을 추천한다.
A Scope implementation that allows for beans to be refreshed dynamically at runtime (see refresh(String) and refreshAll()). If a bean is refreshed then the next time the bean is accessed (i.e. a method is executed) a new instance is created.
자세한 내용은 아래 공식문서를 참고하기를 추천한다.