RabbitMQ

RabbitMQ

비동기 작업 큐를 사용하려면 중간 단계에 Broker라고 부르는 메시지큐가 등장한다

RabbitMQ, ActiveMQ, ZeroMQ, Kafka가 대표적이다

RabbitMQ는 얼랭(Erlang)으로 AMQP를 구현한 메시지 브로커 시스템이다.

AMQP

클라이언트가 메시지 미들웨어 브로커와 통신할 수 있게 해주는 메세징 프로토콜이다.

메시지를 발행하는 Producer에서

Broker의 Exchange로 메시지를 전달하면 Binding이라는 규칙에 의해 연결된 Queue로 메시지가 복사된다.

메시지를 받아가는 Consumer에서는 브로커의 Queue를 통해 매시지를 받아 처리한다.

image

Exchange와 Queue 를 연결하는 Bindings

모든 메시지는 Queue로 직접 전달되지 않고 반드시 Exchange에서 먼저받는다

그리구 Exchange Type과 Biding 규칙에 따라 적절한 Queue로 전달된다.


메시지를 보관하는 Queue

Consumer 어플리케이션은 Queue를 통해 메시지를 가져간다.

Queue는 반드시 미리 정의해야 사용할 수 있다.


하나의 연결을 공유하는 Channels

Consumer 어플리케이션에서 Broker로 많은 연결을 맺는 것은 바람직하지 않다.

rabbitMQ는 channel이라는 개념을 통해 하나의 TCP 연결을 공유해서 사용할 수 있는 기능을 제공한다.



참고

https://jonnung.dev/rabbitmq/2019/02/06/about-amqp-implementtation-of-rabbitmq/

https://blog.dudaji.com/general/2020/05/25/rabbitmq.html

https://velog.io/@hellozin/Spring-Boot%EC%99%80-RabbitMQ-%EC%B4%88%EA%B0%84%EB%8B%A8-%EC%84%A4%EB%AA%85%EC%84%9C

Comments

comments powered by Disqus