ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] RabbitMQ 기본
    CS 2024. 3. 20. 14:42

    RabbitMQ는 오픈소스 메시지 브로커 소프트웨어이고 Erlang으로 구현되어 있습니다. 기본 프로토콜을

    AMQP(Advanced Message Queue Protocol)을 사용하고 있으며 플러그인으로 STOMP, MQTT 등의 프로토콜로 확장할 수 있습니다. 

     

    RabbitMQ 기본 구조

     RabbitMQ는 위와 같은 기본 구조로 이루어져 있습니다. Sender를 통해 RabbitMQ에 메시지를 전달하고 Receiver에서 큐를 읽어 들이는 메커니즘입니다.

     

    그렇다면 RabbitMQ 내부에서 어떤 방법으로 큐에 메시지를 Push 하고 Pop 하는지 알아봅시다.

     

    RabbitMQ 내부구조

    RabbitMQ로 보낼 때 Sender에서 exchange로 보내지게 됩니다. 이후 exchange와 관계된 큐에 메시지가 Push 됩니다.

     

    이때 exchange와 큐간의 관계를 binding이라 부르고 exchange에서는 다음과 같은 4가지 종류로 binding을 제공합니다.

     

    • Direct Exchange
      • 메시지를 Push 할 때 라우팅 키를 입력받는데 라우팅 키와 일치하는 큐 모두와 바인딩됩니다.
    • Fanout Exchange
      • 라우팅 키와 관계없이 모든 큐와 바인딩되어 있습니다.
    • Topic Exchange
      • 라우팅 키를 패턴으로 받아서 패턴에 적합한 큐 모두와 바인딩됩니다.
      • *는 단어 하나, #은 없거나 1나 이상 단어와 일치
      • 예로 *.login.# 바인딩 키라면 다음과 같은 라우팅 키 큐에 Push 됩니다. post.login 또는 gallary.login.park와 같은
    • Headers Exchange
      • Headers로 설정할 경우 바인팅 키는 무시되고 헤더스에 지정된 키 : 값에 일치하는 큐에 바인딩된다.

     

    또한 RabbitMQ는 Management UI를 시스템을 모니터링할 수 있다는 장점이 있습니다. 

     

    기본설정 시 http://localhost:15672에서 확인할 수 있습니다.

    'CS' 카테고리의 다른 글

    [JPA] 영속성 컨텍스트  (0) 2024.04.03
    [CS] RabbitMQ 멀티리스너 설정 시 패키지 통일  (0) 2024.04.03
    [CS] Java HashMap의 동작 과정  (0) 2024.03.01
    [CS] 자바 Minor GC, Major GC(Full GC)  (0) 2024.01.26
    [CS] 자바 Gabage Collection  (0) 2024.01.18
Designed by Tistory.