RabbitMQ

정의
RabbitMQ는 메시지 지향 미들웨어(message-oriented middleware)로, 애플리케이션 간의 메시지 전달을 위해 설계된 오픈소스 메시지 브로커(message broker)이다. AMQP(Advanced Message Queuing Protocol)를 기본 프로토콜로 사용하며, 다양한 메시징 패턴(예: 큐잉, 퍼블리시-서브스크라이브 등)을 지원한다.

개요
RabbitMQ는 Erlang 언어로 작성되었으며, 고가용성, 확장성, 신뢰성 있는 메시징을 구현하기 위해 설계되었다. 분산 시스템이나 마이크로서비스 아키텍처에서 주로 사용되며, 시스템 간의 결합도를 낮추고 비동기 통신을 가능하게 함으로써 애플리케이션의 안정성과 성능을 개선하는 데 기여한다. RabbitMQ는 메시지를 큐에 저장하고, 필요 시 소비자(consumer)에게 전달하는 방식으로 작동하며, 메시지의 재전송, 우선순위 지정, 지속성(persistence) 등을 지원한다.

어원/유래
"Rabbit"은 해당 프로젝트 개발 초기 단계에서 사용된 내부 코드명에서 유래되었으며, 의미 있는 명칭이지만 실제 토끼와는 직접적인 관련이 없다. "MQ"는 "Message Queue"(메시지 큐)의 약자이다. 따라서 RabbitMQ는 "Rabbit"이라는 이름에 메시지 큐잉 기능의 약자를 결합한 명칭이다. 정확한 명명 배경은 공식 문서에 명시되어 있지 않으나, 개발자들이 유쾌함을 의도하여 토끼라는 이름을 선택했을 가능성은 제기된다.

특징

  • 다양한 프로토콜 지원: AMQP 외에도 MQTT, STOMP, HTTP 등의 프로토콜을 플러그인을 통해 지원한다.
  • 다양한 클라이언트 언어 지원: Java, Python, Ruby, .NET, Node.js 등 주요 프로그래밍 언어를 위한 클라이언트 라이브러리를 제공한다.
  • 웹 관리 인터페이스: 관리자 대시보드를 통해 큐 상태, 메시지 수, 연결 정보 등을 모니터링할 수 있다.
  • 확장성과 클러스터링: 여러 서버로 클러스터를 구성하여 고가용성과 부하 분산을 구현할 수 있다.
  • 유연한 라우팅: 익스체인지(exchange) 유형(다이렉트, 토픽, 팬아웃, 헤드리스 등)을 통해 복잡한 라우팅 규칙을 정의할 수 있다.

관련 항목

  • AMQP (Advanced Message Queuing Protocol)
  • 메시지 브로커 (Message Broker)
  • 마이크로서비스 아키텍처
  • Erlang (프로그래밍 언어)
  • Apache Kafka (유사한 메시징 시스템)
  • ActiveMQ (다른 오픈소스 메시지 브로커)
둘러보기

더 찾아볼 만한 주제