리눅스에서 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 | $ docker exec -it <container-id> /bin/bash |
4. tmux로 MQ, Producer, Consumer 총 4개의 Pane으로 구성하기
코드는 [github]를 사용했다. 코드에 대한 설명은 주석을 참고하기 바란다.
RabbitMQ는 기본 동작으로 Multi Consumer에 대해 Round Robin으로 메시지를 전달한다.
아래와 같이 네 개의 Pane으로 화면을 구성하고, 아래와 같이 구성한다.
1 | # 두 Pane에서는 Consumer를 실행한다. |
아래와 같은 화면을 구성하면 성공이다.