이번 포스팅은 본격적으로 rabbitMq 환경설정과 구현할 아키텍처를 미리 정의하고자 한다.
먼저 클라이언트는 react, angular 같은 SPA를 사용할 예정이며, 서버는 springboot로 구현한다. 이 아키텍처에서 rabbitMq는 다음과 같이 활용하고자 한다.

큰 흐름은 Springboot에서 Publish 된 메시지를 rabbitMq로 send 하고, Consumer는 rabbitMq로부터 메시지를 전달받아 라운드로빈 방식으로 처리하게 된다. 이때 rabbitMq와 TCP 통신하는 프로토콜은 AMQP와 STOMP를 혼용해서 사용할 것이다. 그 이유는 Springboot에서 rabbitmq와 연동할 때 지원되는 라이브러리에 STOMP가 지원되지 않아 AMQP와 혼용하게 되었다. 혹시 지원되는 라이브러리가 있다면 댓글로 꼭 알려주세요😢(며칠을 삽질해도 없다는 결론이 나옴.)
🔔 라운드 로빈(Round Robin)
RabbitMQ에서 라운드 로빈은 여러 컨슈머 중에서 메시지를 균등하게 분배하여 처리하는 방식을 말합니다. 예를 들어, 큐에 여러 메시지가 있고 두 개의 컨슈머가 메시지를 처리한다고 가정해 보면, 라운드 로빈 방식에서는 메시지를 순차적으로 컨슈머에게 할당합니다. 따라서 두 컨슈머 모두 메시지를 공평하게 처리하게 됩니다.
라운드 로빈 방식은 기본적으로 RabbitMQ에서 사용되는 메시지 전달 방식입니다. 따라서 별도의 설정이나 코드 변경 없이 사용할 수 있습니다. 하지만 컨슈머의 처리 능력에 따라 메시지 처리 속도가 차이가 있을 경우에는 한 쪽 컨슈머에게 메시지가 몰리는 현상이 발생할 수 있습니다. 이런 경우에는 RabbitMQ에서 제공하는 다른 방식의 메시지 전달 방식을 사용하거나, 컨슈머 측에서 처리 능력을 높이는 대안을 고려해 볼 수 있습니다.
RabbitMq 설치
설치과정에서 Erlang과 RabbitMq 그리고 Springboot의 버전때문에 꽤 오랜시간 삽질을 했다;;; 버전이 맞지 않으면 아얘 동작하지 않으니 버전에 유의해서 환경설정을 해야한다.
RabbitMQ는 Erlang OTP 플랫폼 위에 구축되어 있기 때문에 RabbitMQ를 사용하기 위해서는 먼저 Erlang을 설치해야 한다. Springboot 버전에 따라 호환되는 Erlang과 RabbitMQ 버전이 다르기 때문에 꼭 확인이 필요하다. 나는 Springboot 2.7.7 기준으로 작성되었다. Erlang에 호환되는 RabbitMQ 버전은 RabbitMQ 홈페이지에서 확인 가능하다.
* RabbitMQ Erlang Version Requirements : https://www.rabbitmq.com/which-erlang.html
RabbitMQ Erlang Version Requirements — RabbitMQ
RabbitMQ Erlang Version Requirements This guide covers Erlang/OTP version requirements, Erlang version support policy, a RabbitMQ/Erlang compatibility matrix, version-specific notes and ways of provisioning recent Erlang/OTP releases. RabbitMQ supports up
www.rabbitmq.com
🔔Erlang
Erlang은 Ericsson에서 개발한 함수형 프로그래밍 언어이며, 분산 시스템과 실시간 어플리케이션에 적합한 언어로 알려져 있습니다. 특히, 많은 사용자가 동시에 접속하는 대규모 서버 어플리케이션에 적합하며, 안정성과 확장성이 뛰어나다는 특징이 있습니다. Erlang은 OTP(Open Telecom Platform)라는 프레임워크와 함께 사용되어 네트워크 통신, 분산 처리, 병렬 처리 등을 구현할 수 있습니다.
1. Erlang 설치

Next 눌러 기본으로 설치해준다. 꼭 C 드라이브에 설치해준다..! 왠만하면 D 드라이브에 설치하는 것을 선호하는 편이지만 Erlang, Java와 같은 Develop Kit들은 C 드라이브에 설치한다. 나중에 고생하고 싶지 않으면,.. C 드라이브에 설치하자.
2. 환경변수
윈도우 CMD에서 Erlang을 사용하기 위해 시스템 환경변수 Path를 \bin 경로로 잡아준다.
3. RabbitMq 설치

* rabbitMq install : https://www.rabbitmq.com/download.html
Downloading and Installing RabbitMQ — RabbitMQ
Downloading and Installing RabbitMQ The latest release of RabbitMQ is 3.11.13. See change log for release notes. See RabbitMQ support timeline to find out what release series are supported. Experimenting with RabbitMQ on your workstation? Try the community
www.rabbitmq.com
원하는 버전을 선택해 install 해준다. Erlang 설치와 동일하게 Next 로 설치해준다. 설치가 끝나면 server가 자동실행된다.

rabbitMQ Command를 열어 rabbitMq에 대한 명령어를 실행할 수 있다. 앞으로 CMD라고 칭하는 것이 Command Prompt라고 생각하면 된다.
4. rabbitMq Manager UI 플러그인 설치
rabbitMq는 ctl 백그라운드에서 서비스 되므로 눈으로 확인이 어렵다. 따라서 플러그인 설치해 Manager 대시보드로 편리하게 사용한다. 위에서 말했던 Command Prompt 를 실행해 아래 명령어로 설치하자.
rabbitmq-plugins enable rabbitmq_management
설치를 완료했으면 http://localhost:15672/를 통해 로그인 화면으로 접속한다. 만약, 이 화면이 정상적으로 나오지 않는다면? Erlang 버전과 RabbitMq 버전이 맞지 않아 제대로 서비스가 실행되지 않았기 때문이다. 정상적으로 설치가 되었지만 버전이 맞지 않으면 localhost가 실행되지 않으니 반드시 RabbitMq 홈페이지에서 버전 체크를 해야한다.
나는 이걸로 일주일을 삽질하고 약 8번의 설치과정을 반복했다;;; 버전을 맞추었는데도 localhost로 접속되지 않는다면 서버가 실행중인지 체크해보고 서버 재기동과 컴퓨터 재부팅 등등 다양한 방법으로 시도해봐야 한다. RabbitMq에 대한 자료가 친절하거나 교보재가 많다면 이런 삽질을 하지 않았겠지만 많은 구글링과 포스팅을 봐도 예상치못한 문제가 많았다. 나도 이번에 RabbitMq를 제대로 모르고 공부하면서 삽질한 과정을 포스팅하는 것이기 때문에 이것이 무조건 정답은 아닐 거라고 생각한다. 따라서 좋은 의견이 있다면 언제든 댓글로 달아주세요 :)

이 화면을 보았다면 RabbitMq 설치 후 기본 계정인 guest/guest 로 로그인할 수 있다.