Message Queue 제품별 특징
Apache Kafka
특징
단순한 TCP기반 프로토콜 사용으로 오버헤드 감소
다수의 메세지를 batch 형태로 한번에 publish 하는게 가능하여 TCP/IP 라운드 트립 횟수를 줄일 수 있음
메세지를 파일 시스템에 저장하여 영속성 보장. 특정 과정에서 에러가 발생했을 시 다시 rewind 하는 것이 가능.
OS의 페이지 캐시를 활용, 메세지를 순차적으로 읽도록 하여 성능 면에서 가능한한 희생을 줄임.
커널모드와 유저모드간 불필요한 데이터 복제를 하지 않도록 하는 zero-copy를 이용하여 성능을 높임.
Luxun
특징
Amazon SQS
특징
메시지크기 256KB 제한 (그 이상은 Amazon S3에 저장됨)
FIFO 엄격하게 지켜지지 않음. (순서를 엄격하게 지키기 위해선 추가적인 정렬 필요)
메세지를 여러 서버에 충분히 중복해서 저장하여 안정성 보장. 메세지가 전달된 다음에 직접 삭제를 하지 않으면 일정 시간 뒤 중복해서 받는 것이 가능함.
-
RabbitMQ
특징
AMQP(Advanced Message Queue Protocol) 0-9-1 버전 구현
Mnesia 사용
얼랭 기반으로 높은 신뢰성과 분산 어플리케이션 구축 가능.
Direct Exchange(Point to Point), Topic Exchange(Publish-Subscribe), Fanout Exchange(Multicast) 등의 라우팅 규칙 제공
뛰어난 범용성을 가지고 있음.
기본적으로 클러스터링 지원. 추가로 좀 더 높은 트래픽을 처리하기 위해 셔블, 페더레이션 플러그인 제공.
ZeroMQ
특징
메세지큐라기보다는 소켓과 비슷한 개념으로 생각해볼 수 있음.
비동기 통신, queue를 다이나믹하게 생성.
inproc, ipc, tcp, pgm, epgm등 다양한 전송 매체 사용 가능.
다양한 언어를 지원.
여러 패턴을 통해서 가용성, 신뢰성, 안정성, 확장성 등을 원하는 대로 구현 가능.
in-memory message buffer만 제공하므로 영속성은 없음.