comnic's Dev&Life

[MSA]2. 메시지 브로커를 통한 설정값 관리 본문

MSA(MicrosofService Architecture)

[MSA]2. 메시지 브로커를 통한 설정값 관리

comnic 2019. 4. 20. 13:47
반응형

Java Version: 11, Spring Boot 2.1.4

 

 

[MSA]1. Config Server를 통한 설정 관리
[MSA]2. 메시지 브로커를 통한 설정값 관리
[MSA]3. 마이크로 서비스 간 호출 #1 - Feign

[MSA]4. 마이크로 서비스 간 호출 #2 - Ribbon
[MSA]5. Eureka를 통한 서비스 관리

 

 

 

이번에는 Config Server를 활용하는 방법으로 다수의 instance에 설정 변경을 중단 없이 적용하는 방법으로 메시지 브로커를 활용하는 방법을 살펴보겠습니다.

 


Step 1. Instance 추가

 

1. Run Configurations...

 테스트를 위해 지난번에 만든 service-a를 다른 port로 하나 더 띄우기 위해 간단히 설정하도록 하겠습니다.

ItelliJ와 Eclipse의 경우는 메뉴가 동일 합니다.

[Run > Configurations...] 메뉴를 클릭하시고 VM options에 "-Dserver.port=8081"을 추가 해 줍니다.

IntelliJ - Run > Configurations

 

Eclips - Run > Configurations

이렇게 설정을 하신 후 Run을 하시면 아래와 같이 선택사항이 나타나는데, 각각 한번씩 실행해 주시면 동일한 서비스를 8080과 8081포트로 띄울 수 있습니다.

IntelliJ - Run

 

 

Eclips - Run

 

 

Step 2. rabbitMQ 설치

 

1. Download & install

설치는 해당 사이트에서 OS별로 잘 지원해 주고 있어 링크로 대체 합니다.

 

https://www.rabbitmq.com/download.html

 

Downloading and Installing RabbitMQ — RabbitMQ

Downloading and Installing RabbitMQ The latest release of RabbitMQ is 3.7.14. For release notes, see changelog. Snapshot releases of the RabbitMQ broker available to users who wish to experiment with the latest and greatest features and bug fixes. For more

www.rabbitmq.com

 

 

2. rabbitMQ 실행

설치 후 다음과 같이 실행 합니다.

$ /usr/local/Cellar/rabbitmq/3.7.14/sbin/rabbitmq-server start

또는

brew services start rabbitmq

RabbitMQ 실행화면

 

 

 

Step 3. service에 Cloud Bus 추가

 

 

1. Dependencies 설정 및 추가

 - Cloud Messaging / Cloud Bus

 

기존 서비스에 추가 하기 위해 dependencies에 아래를 추가 합니다.

 

<gradle의 경우>

implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'

 

<maven의 경우>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

이렇게 넣어 주시기만 하면 됩니다.

 

 

Step 4. Test

 

1. Message Service 확인

 Config Server가 정상적으로 동작한다는 가정하에 우리의 서비스를 2개 띄워서 확인 해 보도록 하겠습니다.

8080과 8081 모두 확인 해 보도록 하겠습니다.

8080
8081

위와 같이 모두 동일한 메시지를 보내고 있습니다. 여기에서 microservice-a.properties파일의 message 값 뒤에 Again!!!을 추가해 보도록 하겠습니다.

application.message=Hello~! TEST!!! Changed!!! Again!!!

각 서비스의 /actuator/refresh를 POST로 호출하면 새로운 설정값이 적용된 다는 것은 지난번 글에서 확인 하였습니다. 이런 서비스가 100개가 떠 있다고 하면... 100번을 해 주어야 하는 것이겠죠?!

이번 글의 목적인 메시지 브로커를 활용한 한번에 적용하기위해서는 다음과 같이 아무 서비스에나 한번만 호출해 주시면 됩니다.

 

/actuator/bus-refresh

 

자! 그럼 8081번에 호출해 보도록하겠습니다.

 

http://localhost:8081/actuator/bus-refresh

 

http://localhost:8081/actuator/bus-refresh

 

그리고 8080번과 8081번의 메시지를 확인 해 보겠습니다.

 

http://localhost:8080/message
http://localhost:8081/message

둘 다 잘 적용된 것일 볼 수 있습니다.

 

다음에는 다른 서비스를 하나 더 만들어 마이크로 서비스끼리 호출하는 부분에 대해 알아보도록 하겠습니다.

 

 

[MSA]1. Config Server를 통한 설정 관리
[MSA]2. 메시지 브로커를 통한 설정값 관리
[MSA]3. 마이크로 서비스 간 호출 #1 - Feign

[MSA]4. 마이크로 서비스 간 호출 #2 - Ribbon
[MSA]5. Eureka를 통한 서비스 관리

반응형
Comments