오픈소스 RabbitMQ에 대한 정의 및 설치방법
정의
- AMQP를 따르는 오픈소스 메시지 브로커
- AMQP(Advanced Message Queuing Protocol, 어드밴스트 메시지 큐잉 프로토콜)는 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜, 인스턴스가 데이터를 서로 교환할 때 사용하는 방법
- AMQP 자체가 프로토콜을 의미하기 때문에 이 프로토콜을 구현한 MQ제품들은 여러 가지가 있으며 그중 하나가 RabbitMQ
- 바이너리 메시지를 전달
사용하는 이유
- MQ(Message Queue)를 이용하면 애플리케이션 간 결합도 낮출 수 있고 Real-Time 애플리케이션을 구현 가능
- MQ, 메시지 시스템: Application 간 메시지를 주고받는 Communication Mechanism을 의미, 주로 사용되는 메시지 시스템에는 RabbitMQ, Kafka
- 대규모 시스템에서는 무수히 많은 데이터 교환 엔드포인트가 존재하는데 하나로 통합해 관리 가능
- 메시지를 많은 사용자에게 전달하거나 요청에 대한 처리시간이 길 때
- 요청을 다른 API에게 위임하고 빠른 응답을 할 때
RabbitMQ 동작 방식
- Backend의 front와 Backend의 back, 보통 앞은 RESTful, SOAP, GraphQL 등의 API 서버라고 불리게 되고 뒷 단은 Analysis 서버
- 두 개의 서버를 한 번에 돌리는 것은 위험하다.
- 그 사이에서 데이터를 저장하는 창고 같은 역할을 한다.
- RabbitMQ를 AMQP 형식을 지키고 있지만 양쪽 서버에서 AMQP 형식을 맞추면 잘 작동한다.
중요한 개념
Producer: 메시지를 생성하고 발송하는 주체
Consumer: 메시지 수신하는 주체
Queue : 메시지를 담아놓는 Buffer
Exchnage : 메시지를 적절한 Queue로 옮기는 Routing 역할 수행
Routing Key : Exchange가 Routing 할 때 사용하는 Key
Binding : Exchange와 Queue를 Link 하는 것
설치하기
우분투(Ubuntu)에서 RabbitMQ 설치하기
rabbitmq 기본 포트 - 5672 rabbitmq gui 기본 포트 - 15672 |
RabbitMQ 설치
apt-get install rabbitmq-server
GUI 모드 ON
rabbitmq-plugins enable rabbitmq_management
플러그인이 켜졌는지 확인
rabbitmq-plugins list
e가 되어있으면 켜져 있는 것
실행
rabbitmq-server 포어그라운드로 돌리기
rabbitmq-server start 포어그라운드로 돌리기
service rabbitmq-server start 백그라운드에서 데몬으로 돌리기
*service를 이용하여 돌리는 것을 추천
실행 확인
service --status-all
+: 켜져 있다는 의미
아이디 생성하기
rabbitmqctl add_user <id> <password>
생성된 아이디에 관리자 권한 부여하기
rabbitmqctl set_user_tags <id> administrator
참고
https://blog.dudaji.com/general/2020/05/25/rabbitmq.html
https://ram2ram2.tistory.com/3
https://cheese10yun.github.io/spring-rabbitmq/
'OS > OpenSource' 카테고리의 다른 글
[RabbitMQ] tutorial - "Hello world!" 실습 (python) (453) | 2021.07.12 |
---|