들어가기 전

이번 포스팅에서는 간단하게 RabbitMQ에 기능과 장점에 대해서 알아볼 예정입니다.

RabbitMQ와 Spring을 연동하는 방법에 대해서 궁금하신 분은 아래 포스팅을 참고하시면 도움이 될 거 같습니다.

 

 

[RabbitMQ] RabbitMQ 개념 및 Spring 연동

들어가기 전이번 포스팅에서는 RabbitMQ에 대해서 알아보고 RabbitMQ와 Spring을 연동하는 방법에 대해서 알아보겠습니다. RabbitMQRabbitMQ는 클라우드 환경, 온프레미스에 쉽게 배포할 수 있는 안정적인

hoestory.tistory.com

 

 

RabbitMQ 소개

RabbitMQ는 얼랭(Erlang)이라는 프로그래밍 언어로 구현되었고 유연한 메시지 라우팅, 메시지 내구성 설정, 데이터 센터 간 통신 등 메시지 지향 아키텍처의 복잡한 요구사항에 대해서 벤더 중립적이며 플랫폼 독립적인 솔루션을 제공합니다.

얼랭은 분산처리, 장애허용, 실시간 시스템을 요구하는 애플리케이션을 위해 만들어졌습니다.얼랭의 동시성 처리, 메시지 전달에 대한 설계는 RabbitMQ와 같은 메시지 브로커를 구현할 때 장점이 있습니다.다른 메시지 브로커는 클러스터링 기능을 추가하기 위해 직접 구현해야 하는 반면 RabbitMQ는 얼랭의 프로세스 간 통신(IPC) 시스템을 사용하여 클러스터링 기능을 간단히 구현하였습니다.RabbitMQ의 강점과 유연성 등은 AMQP 스펙을 기반으로 하고 AMQP의 모델 컴포넌트는  익스체인지, 큐, 바인딩이 있습니다.(참고 : 해당 내용에 대해서는 위 포스팅에 자세히 작성되어 있으니 참고하시는 것을 추천드립니다.)

 

RabbitMQ 기능 및 장점

  • 오픈 소스 : RabbitMQ는 오픈소스 프로젝트로 여러 개발자들이 기능 개선과 플러그인에 기여할 수 있습니다.
  • 플랫폼과 업체 중립성 : 대부분의 프로그래밍 언어와 주요 플랫폼의 클라이언트 제공합니다.
  • 경량성 : 관리자 UI 플러그인과 코어 애플리케이션을 함께 구동하여도 40MB 미만 메모리를 사용, 대신 큐에 전송되는 메시지의 양이 많아질수록 메모리 사용량 증가할 수 있습니다.
  • 다양한 클라이언트 라이브러리 제공 : 대부분의 프로그래밍 언어와 플랫폼에 클라이언트 라이브러리가 제공되고 RabbitMQ에 연결할 프로그램 작성을 위해 운영체제 또는 언어 선택을 할 때 특별한 제약이 없습니다.
  • 유연한 성능과 안정성 절충 제어 : 메시지 처리량, 성능을 유연하게 제어할 수 있는 옵션을 제공합니다. 메시지를 전달하기 전에 디스크에 저장하도록 설정 가능하고 일부 서버 장애로 메시지가 손실되지 않도록 처리할 수 있습니다.
  • 대기 시간이 긴 네트워크 환경을 위한 플러그인 : 실제 시스템의 네트워크 토폴리지와 아키텍처에 대해서 대기 시간이 짧은 네트워크 환경에서의 메시지 전달은 기본 코어 모듈로 제공하고 인터넷과 같이 대기시간이 긴 네트워크 간의 메시지 전달은 플러그인을 통해 제공 가능합니다.
  • 서드파티 플러그인 : RabbitMQ를 직접 사용하여 메시지를 데이터베이스에 직접 저장하는 서드파티 플러그인을 제공합니다.
  • 보안계층 : 클라이언트의 접속은 인증서의 유효성을 검증하는 SSL만으로 제한하여 안전하게 처리하고 가상 호스로 사용자 접근을 관리해 메시지와 리소스를 고수준으로 격리해서 처리합니다. 그리고 LDAP과 같은 외부 인증 시스템에 통합하기 위해 플러그인을 사용할 수 있습니다.