리눅스에서 tmux와 rabbitmqctl을 이용한 Queue 잔여 메시지 모니터링하기

이 글은 RabbitMQ에서 하나의 One Queue, One Producer, Two Consumer로 구성해 메시지를 처리하는 과정을 모니터링하는 방법을 다룬다.


1. tmux 사용 방법

[jsqna]

이 글에서 사용하는 tmux 명령어는 아래의 명령어로 한정된다.

  • Ctrl + b 를 통해 명령어 모드 활성
  • Ctrl + b 후 "를 누르면 새 가로 패널 생성 (%를 누르면 세로 패널 생성)
  • Ctrl + b + 방향키를 누르면 각 패널 전환
  • Ctrl + b + [를 누르면 현재 패널에서 스크롤 활성화 (기본으로 스크롤이 불가능하다.)

2. RabbitMQ 설치

간단하게 Docker로 설치한다.

1
$ docker run -d --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

3. RabbitMQCtl 실행 및 모니터링

해당 컨테이너에 bash로 접속하고 watch 명령어로 rabbitmqctl list_queues를 1초마다 반복 실행한다.

해당 명령어는 현재 RabbitMQ 인스턴스에 존재하는 큐와 잔여 메시지를 출력한다.

1
2
3
$ docker exec -it <container-id> /bin/bash

$ watch -n 1 rabbitmqctl list_queues # 1초마다 해당 명령어를 실행한다.

4. tmux로 MQ, Producer, Consumer 총 4개의 Pane으로 구성하기

코드는 [github]를 사용했다. 코드에 대한 설명은 주석을 참고하기 바란다.

RabbitMQ는 기본 동작으로 Multi Consumer에 대해 Round Robin으로 메시지를 전달한다.

아래와 같이 네 개의 Pane으로 화면을 구성하고, 아래와 같이 구성한다.

1
2
3
4
5
# 두 Pane에서는 Consumer를 실행한다.
$ node receive.js

# 한 Pane에서는 Producer를 실행한다.
$ node send.js

아래와 같은 화면을 구성하면 성공이다.