: AMQP(Advanced Message Queuing Protocol) 표준을 따르는 오픈소스 메시지 브로커
Producer가 해야 할 일(메시지)을 브로커에 넣으면 Consumer가 메시지를 가져가서 처리한다.
비동기 처리
: 요청을 큐에 쌓아 나중에 처리할 수 있다.
서비스 분리
: 각 서비스는 서로의 구현에 대한 이해가 없어도 된다.
과부하 방지
: 메시지가 밀리면 큐에 쌓아 놓고 Consumer를 늘려 처리량을 증가시킨다.
: 메시지를 발행한다.
: 메시지를 소비해 처리한다.
: 메시지가 쌓이는 저장소
Consumer는 Queue에서 메시지를 가져간다.
: 메시지를 어떤 큐로 보낼지 라우팅한다.
Producer는 메시지를 Queue로 직접 보내지 않고, Exchange로 보내 Exchange가 규칙에 따라 Queue로 라우팅한다.
: Exchange와 Queue를 라우팅 규칙에 따라 연결하는 것
Exchange는 메세지에 붙는 분류 라벨인 Routing Key를 보고 어떤 Queue로 보낼 지 결정한다.
: Routing Key가 정확히 일치하는 큐로 보낸다.
예) Routing Key: error, info, warning

: Routing Key의 패턴과 매칭된 큐로 보낸다.
예) Routing Key: exampl.orange.rabbit

: Exchange에 연결된 모든 큐로 보낸다.
예)

메세지가 전달되었을 때 큐에서 사라진다. 이를 ACK으로 구현한다.
: Consumer가 메세지를 받아 처리한 뒤 보내는 신호
큐 하나가 있고 부하가 발생해 메세지가 쌓이면 Consumer를 여러개 두어 처리량을 늘린다. 이로 인해 트래픽의 정도에 따라 처리량을 조절할 수 있다. 하나의 메시지를 여러 Consumer에게 동시에 보내는 구조가 아니다.