래빗엠큐로 살펴보는 메시지 프로듀서의 메시지 전달 방식을 알아보자. 래빗엠큐가 아니더라도 Kafka, JMS 등 다른 메시지브로커들도 비슷한 모델을 사용한다. 하나를 알면 열을 안다...!!
기본적으로 구독-발행 시스템을이용한다고 생각하면 된다. 유튜브 구독을 예시로 들면 특정 사용자에게만 알림 보내기, 전체 사용자에게 알림 보내기, 특정 유튜버 구독자에게만 알림 보내기 처럼 이해하면 쉽다.
Binding : 익스체인지가 어떤 큐에 메시지를 적재할지 정하는 규칙
Exchange : 프로듀서로 부터 발행된 메시지를 받고, 큐에 메시지를 라우트한다. 라우팅 알고리즘은 익스체인지 타입과 바인딩 규칙에 따른다.
Direct Exchange
Key 값에 해당하는 큐에만 메시지를 적재한다. 유니캐스트와 개념이 비슷하다. 아니 같다?
Fanout Exchange
메시지를 전체 큐에 적재하는 알고리즘이다. 아묻따 브로드 캐스팅 해버리기~
Headers Exchange
큐의 헤더 내용에 보낼 메시지의 헤더 내용이 동일할 때 메시지를 적재한다.
Topic Exchange
Header Exchange가 헤더가 완전히 일치해야 했다면 Topic Exchange는 말 그대로 토픽이 같으면 메시지를 적재한다. 멀티 캐스트와 비슷하다! 사진에서 알 수 있듯 큐 별로 토픽 조건을 다르게 설정할 수 있다. 마법문자?라고 했나 뭐였지.. 암튼 *, # 같은 문자에 따라서 조건이 달라짐!
Reference
https://www.rabbitmq.com/tutorials/amqp-concepts.html
https://codedestine.com/rabbitmq-direct-exchange/
https://codedestine.com/rabbitmq-headers-exchange/
https://codedestine.com/rabbitmq-topic-exchange/
https://codedestine.com/rabbitmq-fanout-exchange/
'Develop > etc' 카테고리의 다른 글
Adapter Pattern은 무엇인가 (0) | 2023.09.13 |
---|---|
Nginx 넌 도대체 뭐니 (0) | 2023.09.12 |
0.1 + 1.1 == 1.2 문제 (feat. 부동소수점) (0) | 2023.05.23 |
[C++] 람다식 (feat. 2887 행성 터널) (0) | 2023.05.20 |
R Socket이란 무엇일까? (0) | 2023.03.20 |