Kafka(이벤트 브로커) vs RabbitMQ(메시지 브로커)

최재용·2021년 6월 6일
3

개요

kafka와 rabbitmq 모두 pub/sub 기반의 메시지 큐 서비스를 제공합니다.

기존에는 rabbitmq보다 kafka에서 더 많은 기능 지원을 한다 정도만 알고 있었는데요.

이벤트 기반 MSA를 공부하면서 kafka와 rabbitmq에 대해서 조금은 더 자세히 알게되어 그 차이점에 대해서 간략하게 기록합니다.

메시지 브로커

메시지 브로커는 publisher가 생산한 메시지를 메시지 큐에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 해주는 브로커(broker)라고 볼 수 있습니다.

보통 서로 다른 시스템(혹은 소프트웨어) 사이에서 데이터를 비동기 형태로 처리하기 위해 사용합니다.

이러한 구조를 보통 pub/sub 구조라고 하며 대표적으로 RabbitMQ 소프트웨어가 있고 GCP의 pubsub, AWS의 SQS 같은 서비스가 있습니다.

이와 같은 메시지 브로커들은 consumer가 큐에서 데이터를 가져가게 되면 즉시 혹은 짧은 시간 내에 큐에서 데이터가 삭제되는 특징들을 가지고 있습니다.

이벤트 브로커

이벤트 브로커 또한 기본적으로 메시지 브로커의 큐 기능들을 가지고 있어 메시지 브로커의 역할도 할 수 있습니다.

또한 이벤트 브로커는 publisher가 생산한 이벤트를 저장하여, 후에 consumer가 특정 시점부터 이벤트를 다시 consume 할 수 있는 장점이 있습니다.
(예를 들어 장애가 일어난 시점부터 그 이후의 이벤트들을 다시 처리할 수 있습니다.)

이것이 메시지 브로커와 가장 큰 차이라고 볼 수 있습니다.

또한 대용량 데이터 처리에 있어서 메시지 브로커보다는 더 많은 양의 데이터를 처리할 수 있는 능력이 있습니다.

참고

profile
개발 로그

3개의 댓글

comment-user-thumbnail
2022년 6월 7일

"그래서 메시지 브로커는 이벤트 브로커의 역할을 할 수 있지만 메시지 브로커는 이벤트 브로커의 역할을 할 수 없습니다. "라고 작성되어있네요.

1개의 답글
comment-user-thumbnail
2023년 3월 19일

안녕하세요 작성해주신 글 도움 많이 받았습니다.

내용중에 궁금한점이있어서요

RabbitMQ의 경우 메시지를 disk에 영속화 할 수 있는 옵션을 제공하고 있는데요

그럼, 작성해주신 "데이터를 가져가게 되면 즉시 혹은 짧은 시간 내에 큐에서 데이터가 삭제되는 특징들을 가지고 있습니다." 부분과 다른것 같아 공부중에 혼란이와서 여쭙습니다

답글 달기