[Message Queue의 기본 동작 원리는❓]
그림과 같이 Publisher가 Message를 보내면 Queue에 담겨있다가 Cunsumer/Customer 가 받아가는 구조이다.
[1:1 동기 1:N동기 1:1 비동기 1:N 비동기 에 대해 알아보자]
[데이터 통신 방식❓ feat. MSA]
분리된 어플리케이션(모듈)끼리 데이터를 주고 받는(통신) 방식을 알아보면 크게 두가지 동기식 통신방식과 비동기식 통신방식이 있다.
동기식: API 통신
비동기식: 메시지브로커 방식(기술)
메세지 브로커가 존재한다. 브로커는 메세지를 받아서 전달을 해주지 않고 컨슈머가 받아가기 전까지 메세지를 보관한다. 이로써 퍼블리셔와 컨슈머의 자유도를 높일 수 있다.
Kafka ("실시간" 데이터 취합 => 분산 "스트리밍")
Message Queue
[blocking, non-blocking이 동기, 비동기와 다른 개념인가❓]
호출 메서드의 완료 여부를 신경 쓸지/말지
1. 동기
완료 여부를 신경 씀
2. 비동기
완료 여부를 신경 안씀
제어권 넘김/안넘김
1. blocking
A -> B 제어권 넘김
A 멈춤 / B 실행
B 함수 완료시
A <- B 제어권을 다시 넘김
호출한 메서드의 실행흐름을 신경 써? 안써?
로직을 종료시키는 권환이 있어? 없어?
완료여부도 신경쓰고 제어권 넘김
완료여부도 신경쓰고 제어권은 안넘김
완료여부는 신경안쓰고 제어권 넘김
완료여부는 신경안쓰고 제어권 안넘김
[다 필요없고 비동기만 보면 그게 뭐야❓]
병렬로 작업을 배치
[RabbitMQ 실습 해보기]
Get-Started