반응형
RabbitMQ란?
rabbitMQ는 오픈 소스 메시지 브로커 소프트웨어로, 여러 애플리케이션 간의 메시지를 교환하거나 큐를 통해 비동기적으로 데이터를 전달하는 데 사용됩니다.
AMQP(Advanced Message Queuing Protocol)를 기본 프로토콜로 사용하며 메시지 전송을 관리하며, 신뢰성 있는 메시징을 제공하기 때문에 마이크로 서비스 아키텍처에서 중요한 역할을 합니다.
RabbitMQ의 주요 개념
프로듀서(Producer) : 메시지를 생성하여 RabbitMQ로 보내는 애플리케이션
큐(Queue) : 메시지가 저장되는 대기열로, 메시지를 임시 저장하고 메시지를 받을 때까지 유지
컨슈머(Consumer) : 큐에서 메시지를 받아 처리하는 애플리케이션
익스체인지(Exchange) : 메시지를 받아서 큐로 라우팅 하는 역할로, 라우팅 규칙은 exchagne 타입에 따라 달라진다.
*exchange 타입에 대하여 다음 글에서 정리하도록 하겠습니다.
RabbitMQ 주요 명령어
rabbitmqctl 명령어
- rabbitmqctl status : RabbitMQ 서버의 상태 및 정보를 확인. 클러스터 정보, 노드 상태, 연결 상태 등을 표시
- rabbitmqctl list_users : RabbitMQ에 생성된 사용자를 조회할 수 있음
- rabbitmqctl add_user <username> <password> : RabbitMQ에 새로운 사용자 추가
- rabbitmqctl delete_user <username> : 특정 사용자를 삭제
- rabbitmqctl set_permissions -p <vhost> <username> ".* ".*" ".*" : 사용자에게 특정 가상 호스트에 대한 읽기, 쓰기 관리 권한을 부여
- rabbitmqctl list_queues : RabbitMQ에 생성된 큐를 나열, 큐의 이름과 현재 메시지 수 등도 함께 표시
- rabbitmqctl list_exchanges : 현재 RabbitMQ 서버에 생성된 exchange를 나열
- rabbitmqctl list_connections : RabbitMQ 서버에 연결된 모든 클라이언트 연결 상태를 나열
- rabbitmqctl cluster_status : RabbitMQ 클러스터의 상태를 보여줌, 노드 및 연결 상태를 확인 가능
- rabbitmqctl stop : 현재 노드를 안전하게 종료
rabbitmq-plugins 명령어
- rabbitmq-plugins list : 설치된 모든 플러그인과 현재 상태를 나열
- rabbitmq-plugins enable <plugin_name> : 특정 플러그인을 활성화
- rabbitmq-plugins disable <plugin_name> : 특정 플러그인 비활성화
rabbitmq-diagnostics 명령어
- rabbitmq-diagnostics memory_breakdown : RabbitMQ 서버가 사용하는 메모리의 분포를 확인
- rabbitmq-diagnositcs disk_space : RabbitMQ 서버의 디스크 공간 상태를 확인
- rabbitmq-diagnostics check_alarms : 현재 RabbitMQ 서버에 설정된 알람이 있는지 확인
- rabbitmq-diagnostics server_version : 현재 실행 중인 RabbitMQ 서버의 버전 정보를 확인
rabbitmq-queues 명령어
- rabbitmq-queues status <queue_name> : 특정 큐의 상태를 확인, 메시지 수, 대기시간 등을 볼 수 있음
RabbitMQ는 다양한 애플리케이션 간의 신뢰성 있는 비동기 메시지 전송을 가능하게 하며, 특히 마이크로 서비스 아키텍처에서 중요한 역할을 합니다.
* 비동기 메시지는 프로듀서가 메시지를 전송하고 컨슈머가 해당 메시지를 나중에 처리하는 방식으로 컨슈머가 다운되거나 느려져도 프로듀서는 큐에 메시지를 쌓아둘 수 있고 컨슈머가 처리한 후 큐에서 메시지를 제거하는 방식
반응형
'Linux' 카테고리의 다른 글
[Linux] 시스템 로그 관리 방법 logrotate (9) | 2024.10.30 |
---|---|
[linux] rabbitMQ의 Exchange 알아보기 (2) | 2024.10.01 |
[linux] libvirt - 가상화 환경 관리하기 (0) | 2024.09.26 |
[lvm] 스토리지 관리 (PV, VG, LV) (0) | 2024.08.25 |
[HA] 고가용성 클러스터를 위한 pacemaker와 corosync (1) | 2024.08.19 |