Information Security ˗ˋˏ ♡ ˎˊ˗

OS/OpenSource

[RabbitMQ] RabbitMQ 정의 및 설치방법(in Ubuntu)

토오쓰 2021. 7. 12. 17:08

 

오픈소스 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