• 0) Background.. (feat. 가영매니저님)
    • Middleware(?) 라는 컨셉!
      • : 환경이 서로다른 시스템간, 통신을 하게 해주는 계층.
      • RPC (Remote Procedure Call) : 로컬에서 원격의 `프로시져`를 실행호출 할수있도록, MW가 연결을 해주는 매커니즘.
      • ORB (Object Request Broker) : 객체지향 시스템에서 서비스를 지원받을수 있도록, MW가 처리해주는 매커니즘.
      • MOM (Message Oriented Middleware) : Application간 메세지를 송수신하고, 비동기적으로 통신을 처리해주는 MW 매커니즘.
    • RPC Vs MOM
      • "전화:우편" , "동기:비동기" , "blocking:non-blocking" , "Tightly-coupled:Loosely-coupled" , ...
      • 어플리케이션이 많이 연결될수록... 복잡도의 차이가 확연히 나겠죠?
  • 1) AMQP 란? (Advanced Message Queueing Protocol)
    • 다양한 네트워크 상황에서, 어플리케이션이 메세지 송수신을 잘 할수있도록~ 표준화된 MQ 통신규격.
    • (과거 JMS등 에선, 각기다른 '미들웨어' 와 '프로그램' 의 제공해야하는 행위에 표준화의 초점을 두였는데...)
    • AMQP는 각기 다른 구현체가 상호 운용이 될수있고록 하는 수준으로 정의된, "와이어 레벨 프로토콜" 이다.
    • Producer -> 브로커[Exchager|Binding|Queue] -> Consumer 식으로 구성이 됨.
      • producer는 exchager으로 message를 publish 함.
      • exchanger는 binding룰에 따라, queue에 route 함.
      • queue는 exchanger에 binding 됨.
      • consumer는 queue를 subscribe 함.
      • 브로커가 consumer에게 배달하거나, 혹은 comsuber가 직접 가져온다.
    • 1-1) Exchange
      • : exchange-type 과 binding룰 기반으로, 메세지를 라우팅 함.
      • Default-exchanger : ...
      • Direct-exchanger : Message의 Routing-Key와 정확히 일치하는 Binding된 Queue로 라우팅.
      • Fanout-exchanger : Binding 되어있는 모든 Queue에 1:N 식으로 브로드캐스트 라우팅.
      • Topic-exchanger : 특정 Routing-Pattern이 일치하는 Queue로 라우팅.
      • Header-exchanger : key-value로 정의된 Header 속성을 통한 라우팅.
      • 주요속성
        • Name, Durability(브로커 재시작시 유지여부), Auto-delete(마지막큐 해제시 자동삭제), Arguments
    • 1-2) Queue
      • 주요속성
        • Name, Durability, Exclusive(오직 하나의 connection만, 큐삭제시 connection종료), Auto-del, Args
    • ...
    • Message Attribute
      • content-type, encoding, routing-key, delivery-mode, priority, timestamp, expire, app-id
    • Message Payload
      • ...
    • Message Acknowledgement
      • acks
      • // TODO : 메세지 수신 통보 상세과정
  • 2) RabbitMQ 란?
    • Erlang 및 Java 로 만든 표준(ISO/IEC 19464) AMQP를 구현한 오픈소스 "메시지 브로커 시스템".
    • 쉬운Cluster, 편리한ManageUI, Federation, HA, Pub/Sub, 각종 Plugin 등등의 특징.
      • Vhost
        • virtual-host를 통해서, 하나의 RabbitMQ 인스터스 안에 사용하고 있는 Application을 분리.
      • Connection
        • 물리적인 TCP 커넥션. (TLS사용 가능)
      • Channel
        • 하나의 물리적인 connection 내에 생성되는 가상 논리적인 connection들.
        • Consumer의 process나 thread는 각자 이 channel을 통해서 queue에 연결 될 수 있다.
    • 2-1) rabbitmq 설치
      • ...
    • 2-2) rabbitmq cluster 구성
      • ...
    • 2-3) HA 설정
      • ...
    • 2-4) Queue 설정
      • ...
    • 2-5) Flow 제어
      • ...

음... 그냥 원서 봐라... ㅎ

https://www.rabbitmq.com/getstarted.html

 

Getting started with RabbitMQ — RabbitMQ

These tutorials cover the basics of creating messaging applications using RabbitMQ. You need to have the RabbitMQ server installed to go through the tutorials, please see the installation guide or use the Docker image. Code examples of these tutorials are

www.rabbitmq.com

-끝-

'MQ' 카테고리의 다른 글

Airflow + Celery  (0) 2020.09.02
SQS  (0) 2020.05.16
Elastic Stack 란?  (1) 2020.04.12
flafka (flume + kafka)  (0) 2019.06.08
빅데이터와 하둡  (0) 2019.05.18

+ Recent posts