RabbitMQ를 실무에서 접해서 코드를 볼 때 진짜 하나도 이해가 안되더라고요.
전에 한번 개념만 익혔다가 다 까먹어서 제대로 공부해보려고 합니다.
AMQP를 구현한 오픈소스 메세지 브로커
Producers에서 Consumers로 메세지를 전달할 때 중간 브로커 역할
AMQP를 구현했다고 하는데 AMQP가 뭔지 한번 알아볼까요?
AMQP는 밑에와 같은 형식으로 통신하는 하나의 프로토콜 입니다.




RabbitMQ는 분산 시스템 구성이 가능한데요
위에 그림처럼 Exchange가 Message를 로드밸런싱하여 Queue들에게 넣어준다고 보시면 될 것 같네요.
Prefetch Count 값은 Consumer에게 동시에 전송되는 메시지 수를 지정하는 데 사용됩니다.
예를 들어 Prefetch Count가 1이라면 하나의 메시지가 처리되기 전에는 새로운 메시지를 받지 않습니다.

위와 같이 Prefetch Count가 1이면 메세지를 전송하고 다 처리가 된 이후에 작업을 진행할 수 있어서
125ms 이후에 또 다른 메세지를 보낼수 있겠네요.

반면에 Prefetch Count가 많으면 Queue에서 많은 메시지를 가져와 Consumer에게 전달하여 다른 Consumer를 Idle 상태로 유지할 수 있습니다.
적절한 Prefetch Count를 설정하여 운영하는 것이 좋을 것 같습니다.
코드에서 rabbitmq exchange 메소드가 무엇인지, Topic Exchange가 뭔지 등등 궁금했는데
한방에 해소되었네요.
그리고 원래는 왜 쓰는지도 쓰려고 했는데 너무 당연한 이야기인 것 같고 RabbitMQ 자체에 집중하려고 해서 제외했습니다.
제가 지금 하고 있는 실무에서도 분산으로 구성되어있는데 공부했던 내용들을 기반으로 안정화 작업을 해야겠네요!
제가 알기로는 RabbitMQ는 메세지를 보관하는게 휘발성인걸로 알고있긴한데 디스크에 저장할 수 있는 옵션도 있네요?? 이거는 한번 자세히 알아봐야겠습니다.
스프링에서 RabbitMQ를 사용하는 라이브러리가 있으니 해당 라이브러리를 사용하여 편하게 사용해야겠습니다.