메시지를 전달하고 처리하는 데 사용되는 두 가지 주요 패턴인 Message Queue와 pub/sub에 대해 알아보겠습니다.
메시지 큐는 Queue 자료구조를 채택해서 메세지를 전달하는 시스템 입니다.
비동기 통신: 메시지 큐를 사용하면, 메시지를 보내는 측과 받는 측이 동시에 온라인일 필요가 없습니다. 보내는 측은 메시지를 큐에 넣고, 받는 측은 나중에 큐에서 메시지를 받아 처리할 수 있습니다.
점대점 통신(Point-to-Point): 메시지 큐는 일반적으로 점대점 통신을 사용합니다. 이는 메시지가 하나의 송신자(sender)와 하나의 수신자(receiver) 사이에서 전달된다는 것을 의미합니다.
수신자의 독점성: 큐에 들어온 메시지는 하나의 수신자에 의해 소비되며, 메시지가 처리되면 큐에서 제거됩니다. 다른 수신자는 동일한 메시지를 볼 수 없습니다.
메시지의 순차적 처리: 메시지는 큐에 들어온 순서대로 처리됩니다.
주 사용 사례: 작업 스케줄링, 백그라운드 작업 처리, 요청의 순차적 처리 등
사용 예시) 쇼핑몰의 주문 처리
고객이 주문을 하면, 주문 정보를 메시지 큐에 넣고, 이후, 주문 처리 시스템이 큐에서 주문을 순차적으로 꺼내어 처리합니다. 이는 주문 처리 시스템의 부하를 분산시키고, 피크 시간에 발생하는 대량의 주문을 효율적으로 관리할 수 있게 해줍니다.
Tool: RabbitMQ, Kafka 등
pub/sub는 구독자가 토픽을 구독하고, 토픽에 메시지가 발행될때 메시지가 구독자들에게 전달되는 방식입니다.
게시-구독 패턴: 발행자(publisher)가 메시지를 게시하면, 그 메시지는 주제(topic) 또는 채널을 구독하는 모든 구독자(subscriber)에게 전달됩니다.
수신자의 다양성: 한 메시지가 여러 구독자에게 동시에 전달될 수 있습니다. 구독자 각각은 메시지의 독립적인 복사본을 받습니다.
실시간 통신: pub/sub는 실시간 데이터 전송과 이벤트 기반의 시스템에 적합합니다.
주 사용 사례: 실시간 알림, 이벤트 기반 통신, 브로드캐스트 메시지 전송 등
사용 예시) 마케팅 및 프로모션 알림
새로운 프로모션, 할인 이벤트 등에 대한 정보를 발행하여, 이를 구독한 사용자에게 실시간으로 정보를 제공합니다.
Tool: Kafka, RabbitMQ, Redis 등
🚩 정리
메시지 큐는 주로 순차적이고 점대점의 메시지 전달에 적합하며,
pub/sub는 실시간, 다대다의 이벤트나 메시지 전달에 적합합니다.
https://escapefromcoding.tistory.com/706
[서버] 메세지 큐(Message Queue) 을 알아보자