IT/서버

RabbitMQ 기본사항

thesse 2022. 6. 3. 16:53
300x250
반응형

설치 요약

# 인스톨
sudo apt install rabbitmq-server

# 매니지먼트 플러그인 활성화
sudo rabbitmq-plugins enable rabbitmq_management

# 유저 추가 (guest 유저는 로컬에서만 접근)
sudo rabbitmqctl add_user username 'passwd'

# 유저에 권한 부여
sudo rabbitmqctl set_user_tags username administrator

# 포트 방화벽 열기
~$ sudo iptables -I INPUT -p tcp --dport 5672 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
~$ sudo iptables -I OUTPUT -p tcp --sport 5672 -m conntrack --ctstate ESTABLISHED -j ACCEPT
~$ sudo iptables -I INPUT -p tcp --dport 15672 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
~$ sudo iptables -I OUTPUT -p tcp --sport 15672 -m conntrack --ctstate ESTABLISHED -j ACCEPT

 

프로토콜별 기본 포트

  • 5672 : AMQP 포트
  • 15672 : 웹 관리 콘솔
  • 4369 : EPMD (Erlang Port Mapper Daemon)
  • 1883 : MQTT 접속 포트

 

MQ 구조와 Exchange Type

  • work queues < exchange 안씀
  • pub/sub <- fan out (바인딩된 모든 큐로 보냄)
  • routing <- direct +routing Key (라우팅 키에 따라 특정 큐로 보냄)
  • topic <- topic +routing Key (*.str.# 패턴을 충족하는 모든 큐로 보냄)
  • rpc <- reply_queue/correlation_id
  • Header Exchange

 

Queue 속성

  • Duriability
    • durable : 메세지를 디스크에 저장
    • transient : 메세지를 메모리에 저장
  • Auto delete
    • 모든 컨슈머가 subscribe하면 해당 큐는 자동으로 없어진다
  • Arguments
    • 메시지 TTL, Max Length 등 추가기능 명시

 

Channels

  • 컨슈머 앱에서 브로커로 많은 연결을 맺는 것은 바람직하지 않다
  • channel 개념을 통해 하나의 tcp 연결을 공유하여 사용
  • 멀티 스레드, 멀티 프로세스 사용시에는 별도의 채널 사용하는 것이 바람직

 

참고

https://www.rabbitmq.com/getstarted.html

https://oingdaddy.tistory.com/166

https://shortstories.gitbooks.io/studybook/content/message_queue_c815_b9ac/rabbitmq-c0bd-c9c8.html

https://jonnung.dev/rabbitmq/2019/02/06/about-amqp-implementtation-of-rabbitmq/

300x250
반응형