[jms] ActiveMQ 또는 RabbitMQ 또는 ZeroMQ 또는 [닫힘]

우리는 ActiveMQ vs RabbitMQ vs ZeroMQ의 장단점에 대한 경험을 듣고 싶습니다. 다른 흥미로운 메시지 대기열에 대한 정보도 환영합니다.



답변

편집 : 내 초기 답변은 AMQP에 중점을 두었습니다. 나는 주제에 대한 더 넓은 견해를 제공하기 위해 다시 작성하기로 결정했습니다.

이 3 가지 메시징 기술은 분산 시스템 구축에 대해 서로 다른 접근 방식을 가지고 있습니다

RabbitMQ 는 AMQP 프로토콜의 주요 구현 중 하나입니다 (Apache Qpid와 함께). 따라서 브로커 아키텍처를 구현합니다. 즉, 클라이언트로 메시지를 보내기 전에 중앙 노드에서 메시지가 대기됩니다. 라우팅,로드 밸런싱 또는 지속적인 메시지 큐잉과 같은 고급 시나리오가 단 몇 줄의 코드로 지원되므로이 접근 방식을 통해 RabbitMQ는 사용 및 배포가 매우 쉽습니다. 그러나 중앙 노드가 대기 시간을 추가하고 메시지 엔벨로프가 상당히 크기 때문에 확장 성과 속도가 느려집니다.

ZeroMq 는 금융 분야에서 볼 수있는 것과 같은 높은 처리량 / 낮은 대기 시간 시나리오를 위해 특별히 설계된 매우 가벼운 메시징 시스템입니다. Zmq는 많은 고급 메시징 시나리오를 지원하지만 RabbitMQ와 달리 다양한 프레임 워크 (예 : 소켓 및 장치)를 결합하여 직접 구현해야합니다. Zmq는 매우 유연하지만 메시지를 보내는 것보다 복잡한 작업을 수행하기 전에 80 페이지 정도의 안내서 (Zmq를 사용하지 않더라도 분산 시스템을 작성하는 사람이라면 누구나 읽을 것을 권장합니다)를 공부해야합니다. 2 명의 동료 사이.

ActiveMQ 는 중간에 있습니다. Zmq와 마찬가지로 브로커 및 P2P 토폴로지와 함께 배포 할 수 있습니다. RabbitMQ와 마찬가지로 고급 시나리오를 구현하는 것이 쉽지만 일반적으로 원시 성능을 희생합니다. 메시징의 스위스 군용 칼입니다 :-).

마지막으로 3 가지 제품 모두 :

  • 가장 일반적인 언어 (C ++, Java, .Net, Python, Php, Ruby 등)에 대한 클라이언트 API가 있습니다.
  • 문서가 강력하다
  • 적극적으로 지원됩니다

답변

Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ를 그리워 했습니까?

메시지 대기열 서버

메시지 대기열 서버는 Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling 또는 Sparrow), Scala (Kestrel, Kafka) 또는 Java (ActiveMQ) 등 다양한 언어로 제공됩니다. 간단한 개요는 여기 에서 찾을 수 있습니다

참새

  • Alex MacCaw 작성
  • Sparrow는 Ruby로 작성된 가벼운 대기열로 “memcache”입니다.

찌르레기

황조롱이

  • Robey Pointer 작성
  • 스칼라로 작성된 Starling 복제본 (Ruby에서 Scala로 Starling 포트)
  • 큐는 메모리에 저장되지만 디스크에 기록됩니다

RabbitMQ

  • RabbitMQ는 Erlang의 Message Queue 서버입니다
  • 작업을 메모리에 저장 (메시지 큐)

아파치 액티브 MQ

  • ActiveMQ는 Java의 오픈 소스 메시지 브로커입니다.

콩 줄기

아마존 SQS

카프카

  • 스칼라에서 링크드 인에 작성
  • LinkedIn에서 모든 페이지 및 기타보기의 처리를 오프로드하는 데 사용
  • 기본적으로 지속성을 사용하고 핫 데이터에 OS 디스크 캐시를 사용합니다 (위의 지속성이 활성화 된 것보다 처리량이 더 높음)
  • 오프라인 처리로 온라인을 모두 지원

ZMQ

  • 동시성 프레임 워크 역할을하는 소켓 라이브러리
  • 클러스터 제품 및 슈퍼 컴퓨팅을 위해 TCP보다 빠름
  • inproc, IPC, TCP 및 멀티 캐스트를 통한 메시지 전달
  • 팬 아웃, pubsub, 파이프 라인, 요청-응답을 통해 N-to-N 연결
  • 확장 가능한 멀티 코어 메시지 전달 앱을위한 비동기 I / O

EagleMQ

  • EagleMQ 는 개방형 소스, 고성능 및 경량 큐 관리자입니다.
  • C로 작성
  • 모든 데이터를 메모리에 저장하고 지속성을 지원합니다.
  • 자체 프로토콜이 있습니다. 대기열, 경로 및 채널 작업을 지원합니다.

IronMQ

  • IronMQ
  • 집필
  • 완전 관리 큐 서비스
  • 클라우드 버전 및 온 프레미스로 모두 사용 가능

이것이 도움이 되길 바랍니다.
출처


답변

알고 싶은 것보다 더 많은 정보 :

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes


최신 정보

바울이 댓글에 추가 한 내용을 자세히 설명하면됩니다. 위에서 언급 한 문서는 2010 년 이후, 그래서 소금 한 스푼 읽을 죽었어요. 3 년 동안 많은 것들이 바뀌 었습니다.

위키 페이지의 역사


답변

실제로 사용 사례에 따라 다릅니다.

0MQ와 ActiveMQ 또는 RabbitMQ를 비교하는 것은 공평하지 않습니다. ActiveMQ 및 RabbitMQ는 설치 및 관리가 필요한 메시징 시스템입니다. 이들은 ZeroMQ보다 훨씬 많은 기능을 제공합니다. 그들은 실제 영구 대기열, 트랜잭션 지원 등을 가지고 있습니다.

ZeroMQ는 경량 메시지 지향 소켓 구현입니다. 또한 프로세스 내 비동기 프로그래밍에도 적합합니다. ZeroMQ를 통해 “엔터프라이즈 메시징 시스템”을 실행할 수는 있지만 스스로 구현해야합니다.

그래서:

ActiveMQ, RabbitMQ, Websphere MQ 및 MSMQ는 “Enterprise Message Queues”입니다

ZeroMQ는 메시지 지향 IPC 라이브러리입니다.


답변

RabbitMQ와 ActiveMQ는 여기에 비교되어 있습니다 . 기본적으로 ActiveMQ는 메시지 전달을 보장하도록 구성되어 덜 안정적인 메시징 시스템에 비해 느리게 인상을 줄 수 있습니다. 다른 메시징 시스템과 같은 성능을 원할 경우 언제든지 성능 구성을 변경할 수 있습니다. 최소한 그 옵션이 있습니다. 확장 성, 성능 및 고 가용성 구성에 대한 포럼 및 ActiveMQ FAQ에 대한 많은 정보가 있습니다. 또한 STOMP와 같은 다른 와이어 형식과 함께 사양이 완성되면 ActiveMQ는 AMQP 1.0을 지원합니다.

ActiveMQ의 또 다른 장점은 Apache 프로젝트이므로 개발자 커뮤니티에는 다양성이 있으며 한 회사와 관련이 없습니다.


답변

ActiveMQ 또는 RabbitMQ를 사용하지 않았지만 ZeroMQ를 사용했습니다. ZeroMQ와 ActiveMQ 등의 큰 차이점은 0MQ는 브로커가 없으며 메시지 전달에 대한 신뢰도가 없다는 것입니다. 많은 메시징 패턴, 스포츠, 플랫폼 및 언어 바인딩을 지원하는 사용하기 쉬운 메시징 API를 찾고 있다면 0MQ를 살펴볼 가치가 있습니다. 완전한 메시징 플랫폼을 찾고 있다면 0MQ가 청구서에 맞지 않을 수 있습니다.

0MQ 사용 방법에 대한 예는 www.zeromq.org/docs:cookbook 을 참조하십시오 .

전기 사용량 모니터링 애플리케이션에서 메시지 전달에 0MQ를 성공적으로 사용했습니다 ( http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ 참조 ).


답변

zeroMQ를 사용하고 있습니다. 간단한 메시지 전달 시스템을 원했고 브로커의 복잡성이 필요하지 않습니다. 또한 거대한 Java 지향 엔터프라이즈 시스템을 원하지 않습니다.

빠르고 간단한 시스템을 원하고 여러 언어를 지원해야하는 경우 (C 및 .net 사용) 0MQ를 참조하십시오.