개발/spring-cloud
[cloud] spring cloud bus
방푸린
2024. 1. 29. 20:08
반응형
환경: springboot2.7.6, java 17, springcloud 2021.0.8
사용 이유:
분산 시스템의 노드(서비스들)를 경량 메시지 브로커(rabbit mq)와 연결하여 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(broadcast)한다.
즉 중간에 메세지를 전달하는 미들웨어(AMQP; 메시지 지향 프로토)를 둠으로써 안정적으로 변경사항을 적용하도록 함
사용 법:
우선 기존에 spring cloud config 서버가 있어야 하고 거기서 설정파일을 가져오게끔 bootstrap도 추가되어 있어야 한다.
아래 글 참고.
2024.01.29 - [개발/spring] - [cloud] 파일을 동적으로 관리하는 config server
버스로 연결하려는 모든 프로젝트에 아래와 같이 디펜덴시 추가한다. 수정 시 확산을 위해 actuator도 필요하다.
<!-- 설정파일 외부 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator </artifactId>
</dependency>
<!-- spring cloud bus -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp </artifactId>
</dependency>
management:
endpoints:
web:
exposure:
include: busrefresh
actuator 설정에 busrefresh 추가
연결된 서비스 중 아무데서나 위 api를 호출하면 204 성공이 떨어지고 spring cloud config 서버를 통해 받고 있던 데이터들이 전 서비스에 걸쳐 모두 한 번에 refresh 되는 것을 볼 수 있다. (이전에는 각각 /actuator/refresh를 호출했어야 했음)
728x90
반응형