RabbitMQ

INSANEZINDOL·2021년 11월 25일
post-thumbnail
  1. RabbitMQ란
  • AMQP (Advanced Message Queueing Protocol) message broker software open source
  • AMQP -> 표준MQ 프로토콜
  1. RabbitMQ Work Flow
  • 메세지는 Message Queue를 통해 원하는 사용자에게 전달할 수 있음
  • Message Broker는 Producer와 Consumer 사이 중간자 역할을 담당
  • Message는 Queue에 저장되어 소비자가 조회할때까지 저장
  1. RabbitMQ 사용
  • Message Queue는 빠른 응답을 원할 때 주로 사용
  • 많은 Resource가 필요한 작업은 Event를 발생시켜 다른 API에게 위임함
  • 다른 API에게 위임함으로써 Request에 대해 빠르게 응답 가능
  • Message를 많은 사람들에게 전달하고 싶을때 주로 사용
  • 두 Application간의 결합도는 Message Queue를 통해 낮출 수 있는 장점이 있음
  1. Exchanges
  • 다른 Queue에게 Routing하는 역할을 담당
  • Message는 바로 Queue로 Publishing 하지 않음
  • Producer는 Exchange에게 Message를 보냄
  1. Types of Exchange
  • Direct Exchange

Message의 Routing Key와 정확히 일치하는 Binding된 Queue로 Routing

  • Fanout Exchange

Binding된 모든 Queue에 Message를 Routing

  • Topic Exchange

특정 Routing Pattern이 일치하는 Queue로 Routing

  • Headers Exchange

key-value로 정의된 Header 속성을 통한 Routing

  1. Exchange 기타 설정값
  • Durability

브로커가 재시작 될 때 남아 있는지 여부

durable -> 재시작해도 유지가능

transient -> 재시작하면 사라집니다.

  • Auto-delete

마지막 Queue 연결이 해제되면 삭제

  1. Message Flow
  • Producer는 Message를 Exchange에게 보내게 됩니다.

Exchange를 생성할때 Exchange의 Type을 정해야 합니다.

  • Exchange는 Routing Key를 사용하여 적절한 Queue로 Routing을 진행합니다.

Routing은 Exchange Type에 따라 전략이 바뀌게 됩니다.

  • Exchange - Queue와 Binding이 완료된 모습을 볼 수 있습니다.

Message 속성에 따라 적절한 Queue로 Routing이 됩니다.

  • Message는 Consumer가 소비할때까지 Queue에 대기하게 됩니다.
  • Consumer는 Message를 소비하게 됩니다.
  1. RabbitMQ 용어
  • Vhost(virutal host)

Virtual Host를 통해서 하나의 RabbitMQ 인스턴스 안에 사용하고 있는 Application을 분리할 수 있음

  • Connection

물리적인 TCP Connection, HTTPS -> TLS(SSL) Connection을 사용

  • Channel

하나의 물리적인 Connection 내에 생성되는 가상의 Connection

Consumer의 process나 thread는 각자 Channel을 통해 Queue에 연결 될 수 있음

profile
Backend Engineer

0개의 댓글