AMQP(Advanced Message Queuing Protocol) 오픈 소스 TOP 4!

아래 글은  Top 5 Open Source AMQP (Advanced Message Queing Protocol) Implementations 을 번역한 글입니다.

AMQP(Advanced Message Queuing Protocol)은 미들웨어를 통한 메시징을 지원하도록 설계된 개방형 표준 프로토콜입니다. AMQP는 클라이언트와 메시징 미들웨어 간의 기능적 상호 운용성을 만들었습니다. 이 모델은 브로커 서비스 내에서 메시지를 라우팅하는 구성 요소 집합과 Network Wire Live Protocol로 구성되어 클라이언트 응용 프로그램이 서버와 통신하고 AMQ 모델과 상호 작용할 수 있게 합니다. 이 프로토콜은 분산 응용 프로그램에서 사용되며, point-to-point, publish, subscribe, fan-out 그리고 request-response 메시징 시스템을 포함합니다. AMQP는 메시지를 저장하지 않고 받는 사람을 대신하여 메시지를 대기열로 라우팅합니다. AMQP 구현에 대한 상위  4개 공개 소스는 아래와 같습니다.

1. RabbitMQ

RabbitMQ는 Erlang으로 작성 되었으며, 가장 널리 사용되는 강력한 메시징 중 하나입니다. RabbitMQ는 사용하기 쉽고 Cloud 규모에 적합합니다. 이 응용 프로그램은 대부분의 주요 운영 체제 및 플랫폼을 지원하며, Mozilla Public License에 기반한 오픈 소스입니다. 비즈니스 메시징 용으로 설계 되었으며, Adapters, SMTP, STOMP, HTTP 및 Light-Weight Web Messaging 통해 메시징을 제공합니다. active user들과 contributor들로 구성된 활발한 커뮤니티를 보유하고 있으며, VMAre의 SprinSoruce 부문을 통해 광범위한 상용 구현 지원을 제공합니다. RabbitMQ의 one time message는 소비자에게 메시지를 두 번 보내고, 여러 consumer들은 한 번에 서로 다른 메시지를 받을 수 있다. RabbitMQ의 주요 단점은 서버의 클러스터링 특성이 좋지 않다는 것입니다. 두 개의 대기열을 두 개의 호스트에 설정해야 하며 클라이언트 측 중복을 방지해야합니다. 그것은 250,000 이상의 클라이언트 및 대기열 수의 확장성을 지원하지 않습니다. Rabbit은 DNS / DHCP 오류에 매우 민감합니다.



2. OpenAMQ

OpenAMQ는 메시지 브로커이며 C/C ++ 및 JMS 용 클라이언트 라이브러리를 지원합니다. WireAPI라고 불리는 C API를 제공합니다. 이 API는 원격 관리 도구, instant federation, one line failover, 느린 클라이언트에 대한 보호 및 기타 많은 기능이 있습니다. 기본 / 보조 장애 조치, 메시지 처리, 트랜잭션 및 교환, 대기열, 서버 간의 바인딩 및 메시지 복제를 통해 HA를 지원합니다. 서버 측 상태가 재생성되었고, HA 지원은 연합 지원을 배제합니다. OpenAMQ의 단점은 문서가 거의 없고, 구현을 위한 강력한 커뮤니티 지원이 없다는 것입니다. AMQP 0.9의 이하 버전에서 작동하며 주로 JAVA 중심이며, 다른 언어의 기능을 제공하지 않습니다.





3. StormMQ

StormMQ는 On-Premise 또는 Cloud 솔루션으로 호스팅되는 메시지 지향형 미들웨어를 제공합니다. Cloud를 통해 전송되는 데이터에 대해 안전한 개방형 플랫폼과 법적 보호를 제공합니다. 이 솔루션은 RabbitMQ 및 Apache QPid의 클라이언트와 함께 작동하며, Mozilla Public License기반의 코드가 포함 된 오픈 소스를 통해 동작합니다. 이 소프트웨어는 Java로 작성되었으며, StormMQ의 고객 목록에는 미국 기반의 Smith Electric Vehicle과 미국 에너지 부가 포함되어 있습니다.




4. Apache Qpid

Apache Qpid는 C++, JMS(Java Messaging Service), Java, Python, .Net 및 Ruby로 작성된 메시지 브로커를 제공합니다. Apache는 AMQP 사양, 클러스터링 이기종, 다중 플랫폼 지원, 연합 및 보안을 구현합니다. 모든 대기열 데이터 및 메타 데이터는 클러스터를 구성하는 노드 전체에 복제됩니다. QPID는 아파치의 컴파일 프로젝트의 일종으로 클라이언트들의 더미와 서로의 버전의 AMQP 표준을 지원하는 두 개의 브로커를 가지고있다. 그리고 약간의 추가적인 boost libraries을 가지며, C++ 및 Python에서 메시징을 사용하는 것을 지원한다. 하지만 HTTP 게이트웨이를 통해 어느 언어로도 메시지를 생성하는 지원을 허용하지 않는다. C++ 브로커는 호스트 당 최대 50 만 개의 대기열을 제공하며, 서버를 다시 시작한 후에도 전달되지 않는 메시지를 위한 영구 대기열을 지원합니다.





AMQP의 주요 목적은 메시지를 전달하고 간단한 대기열 시스템을 사용하여 여러 서버 측 응용 프로그램에 비동기 메시지를 전달하는 것이고 전달 시스템은 구현이 쉽고 내구성과 확장 성이 우수해야 합니다. RabbitMQ는 고객의 선호하는 AMQP 중 하나이지만 더 많은 기능이 필요합니다.


[영문 원본 자료]

댓글

이 블로그의 인기 게시물

macOS가 갑자기 부팅이 되지 않을 경우 데이터 복구 또는 백업 방법

C++로 프로그래밍할 때 인자 또는 리턴 값으로 std::vector 등 STL 데이터 타입 처리하는 좋은 방법

Git 저장소를 병합하는 방법(How to merge repositories in Git)