쵼쥬
쵼쥬의 개발공부 TIL
쵼쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (276)
    • 코딩테스트 (192)
      • [알고리즘] 알고리즘 정리 (7)
      • [백준] 코딩테스트 연습 (126)
      • [프로그래머스] 코딩테스트 연습 (59)
    • Spring (71)
      • [인프런] 스프링 핵심 원리- 기본편 (9)
      • [인프런] 스프링 MVC 1 (6)
      • [인프런] 스프링 MVC 2 (4)
      • [인프런] 실전! 스프링 부트와 JPA 활용1 (7)
      • [인프런] 실전! 스프링 부트와 JPA 활용2 (5)
      • [인프런] 실전! 스프링 데이터 JPA (7)
      • [인프런] 실전! Querydsl (7)
      • JWT (5)
      • [인프런] Spring Cloud (17)
      • [인프런] Spring Batch (4)
    • Java (6)
      • [Java8] 모던인자바액션 (4)
      • [부스트코스] 웹 백엔드 (2)
      • [패스트캠퍼스] JAVA STREAM (0)
    • CS (6)
      • 디자인 패턴과 프로그래밍 패터다임 (2)
      • 네트워크 (4)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 스프링
  • 자바
  • BFS
  • jpa
  • Spring Data JPA
  • querydsl
  • MVC
  • spring
  • 부스트코스
  • 위클리 챌린지
  • 코딩테스트
  • 비트마스킹
  • 알고리즘
  • 타임리프
  • 백분
  • 백준
  • 누적합
  • 인프런
  • 구현
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쵼쥬

쵼쥬의 개발공부 TIL

Spring Cloud Bus
Spring/[인프런] Spring Cloud

Spring Cloud Bus

2022. 6. 24. 16:14

Config 값 변경했을때 알아오는 방법

  • 서버 재기동 (크게 의미 없음. 사용 X)
  • Actuator refresh
  • Spring cloud bus

 

Spring Cloud Bus

  • 분산 시스템의 노드(MicroService)를 경량 메시지브로커(RabbitMQ)와 연결
  • 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)

Config Client 또는 Spring Cloud Config Server가 HTTP POST /busrefresh를 실행하게 되면 Sping Cloud Bus에게 알리고 연결된 Config Client 들도 함께 업데이트 처리한다.

 

메시지 큐잉 : 마이크로서비스들 중간에 요청사항을 가지고 있는 메시징 서버(미들웨어)를 놓아둔 형태

AMQP를 이용해서 변경사항을 일괄적으로 각 Config Client에게 전달

 

메시지 브로커

AMQP

  • Advanced Message Queuing Protocol 이라고 하여, 메시지 지향 미들웨어를 위한 개방형 표준 응용 프로토콜
  • 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안
  • Erlang, RabbitMQ 에서 사용

 

Kafka

  • Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트
  • 분산형 스트리밍 플랫폼
  • 대용량 데이터를 처리 가능한 메시징 시스템

 

 

RabbitMQ 설치 - Mac

  • brew update
  • brew install rabbitmq
$ brew update

$ brew install rabbitmq

 

rabbitmq를 서비스로 등록 - brew services start rabbitmq

개별적으로 실행 - rabbitmq-server

 

실행

$ export PATH=$PATH:/usr/local/sbin # 설치 위치 환경변수 설정

$ rabbitmq-server

 

http://localhost:15672 로 접속하면 다음과 같이 로그인 페이지가 나오고 username 과 password 에 guest 를 입력하여 로그인 할 수 있다.

 

기본 계정

  • Username : guest
  • password : guest

 

 

프로젝트 수정 

Dependencies 

Config Server

 - spring-boot-starter-actuator

 - spring-cloud-starter-bus-amqp

 

Users Micorserivce, Gateway Service

 - spring-cloud-starter-bus-amqp

 

application.yml

Config Server, Users Micorserivce, Gateway Service

spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672 # 웹 브라우저에서 접속할때는 15672, amqp 프로토콜 사용시에는 5672
    username: guest
    password: guest

 

Config Server

# (rabbitmq) config server에 변경 요청 사항이 들어오게 되면 rabbitMQ에 통보한 후 rabbitMQ에 등록된 정보보고 push
management:
  endpoints:
    web:
      exposure:
        include: health, busrefresh

나머지도 busrefresh 추가

 

 

테스트

  1. Start RabbitMQ Server
  2. Start Spring Cloud Config Service
  3. Start Eureka Discovery Service
  4. Start Spring Cloud Gateway Service
  5. Start Users Mircroservice

 

config 변경 후 -> http://127.0.0.1:8000/user-service/actuator/busrefresh -> 204 no content

apigateway, userservice 한 곳에서만 호출해도 모두 정상적으로 적용된다.

'Spring > [인프런] Spring Cloud' 카테고리의 다른 글

Microservice간 통신  (0) 2022.06.28
설정 정보의 암호화 처리(Encryption, Decryption)  (0) 2022.06.27
Configuration Service  (0) 2022.06.24
Users Microsservice - Login  (0) 2022.06.20
Catalogs, Orders Microservice  (0) 2022.06.19
    'Spring/[인프런] Spring Cloud' 카테고리의 다른 글
    • Microservice간 통신
    • 설정 정보의 암호화 처리(Encryption, Decryption)
    • Configuration Service
    • Users Microsservice - Login
    쵼쥬
    쵼쥬

    티스토리툴바