개념

AMQP를 기반으로 둔 소프트웨어

RabbitMQ에서는 ACK을 받지 못한 메시지의 경우, 대기를 하고 있다가 전달한 소비자 서버의 상태를 확인한 후, Disconnected와 같은 신호를 받았을 경우 해당 소비자를 제외하고 다른 소비자에게 동일한 메시지를 전달

명령어

docker run

docker run -d -p 5672:5672 -p 8080:15672 -e RABBITMQ_DEFAULT_USER=smr -e RABBITMQ_DEFAULT_PASS=rabsurro123 --name rabbitmq rabbitmq:management

RabbitMQ VS Redis

<aside> 💡

AMQP를 따라는 오픈소스 메시지 브로커로 기능이 완전하고 안정적이며 내구성이 뛰어납니다. 응용 프로그램에게 메시지를 주고 받을 수 있으며, 메시지가 수신될 때까지 안전하게 있을 수 있도록 공용 플랫폼을 제공함.따라서 메시지를 많은 사용자에게 전달하거나, 요청에 대한 처리 시간이 길 때, 해당 요청을 다른 API에게 위임하고 빠른 응답을 할 때 사용한다. 메시지 우선 순위 기능을 가지고 있고 Redis와 비교했을 때 더 다양한 기능을 제공한다.

</aside>

<aside> 💡 Redis는 기능이 완전하지만 갑작스러운 종료 또는 전원 장애 시 데이터 손실에 매우 취약하다. 인메모리 데이터베이스, 컴퓨터 메모리를 이용한(in-memory) Cache 서버Key-Value를 이용해 Celery가 처리할 작업을 Celery에 보낸 후 Cache에서 해당 Key를 제거하는 방식으로 작동메모리에서 Cache를 가져다 쓰기 때문에 속도가 매우 빠름 매우 빠른 서비스 및 메모리 내 기능을 제공하기 때문에 짧은 보존 메시지에 적합 단, 큰 메시지를 처리할 때는 대기 시간이 오래 걸림

</aside>