순서
I. Asynchronous Messaging Pattern
1. Message Queue 방식
2. Publish / Subscribe 방식

 


I. Asynchronous Messaging Pattern

 

비동기 메세징 패턴은 안정성, 성능 향상을 목적으로 이벤트 발행자의 메세지 생성이
이벤트 구독자의 작업과 분리되는 방식으로
현재 구글 플랫폼, 아마존 AWS 클라우드 시스템 등에 사용되고 있다.

패턴 속 두 가지 메세지 전달 방식이 있고 가장 큰 특징은
하나의 메세지를 1명이 구독하는지, 다수가 구독 하는 지에 따라 달라진다.


1. Message Queue 방식 

  • One Message - One Consumer

Message Queue방식은 Publisher가 Consumer에게 명령을 직접 내리는 방식으로 작동한다.

위 그림에서 Queue 내부에는 소비를 기다리는 여러 개의 메세지가 들어있고,
m1이 A에게 소비 되었기 때문에 B는 m1을 소비할 수 없다.

이 메시지 처리 작업을 소비자에게 위임하여, 작업이 한 번만 실행되도록 할 수 있고
해당 작업을 수행할 때 까지 대기열에 저장된다.

이렇게 각 메시지가 하나의 소비자에 의해 한 번만 처리되기 때문에
Message Queue 방식을 "일대일" "지점 간" 통신이라고 부른다.


2. Publish / Subscribe 방식

  • One Message - All Registered Consumer

결론적으로 Message Queue와 가장 큰 차이는 모든 소비자들이 메시지를 갖는다는 것이다.

발행자 - 구독자라는 용어를 사용하는데,

발행자는 Topic ( Code상의 Interface )에 단순히 메세지를 보내고
Topic에서 각 구독자에게 메세지를 모두 복사하여 분해하고 있다.

 

 

이처럼 Pub-Sub 방식은 모든 구독자들이 메세지의 복사본을 가지도록 보증할 때 사용한다.

ex) 유튜브 알림설정시 (구독 시) → 해당 유튜버가 방송을 시작하면(이벤트) 모든 구독자에게 알람(메시지)이 전달된다.

DI 패턴에서 의존성을 매개체를 통해 주입 받는 것처럼 

Publisher는 내 정보를 누가 사용하는지 알 필요가 없이 전달만 하면 되고
Subscriber는 누구에게서 정보가 오는지 알 필요가 없이 받기만 하면 되므로
Topic(코드상 Interface)이라는 중간 매개체가 있는 것이다.

 


 .NET(WPF C#) 의 MVVM 구현을 도와주는 Prism Library에서
해당 PubSub 방식의 이벤트 처리를 사용하는 법을 알아보자.


2023.02.11 - [Programming/WPF (.NET)] - [Programming][WPF] Prism Library Event 사용법

 

+ Recent posts