[RabbitMQ] Shovel로 메세지 포워딩하기

🔥Log·2024년 6월 12일
0

RabbitMQ

목록 보기
7/9

🧐 Shovel


1) Shovel은 무엇인가

Shovel은 RabbitMQ의 주요 플러그인 중 하나로, Source에서 Destination으로 데이터를 단방향으로 전달하는 역할을 한다.

2) Shovel을 왜 쓰는가

Shovel은 Source 환경을 건들지 않고, 메세지들을 다른 브로커 또는 환경으로 이동시켜서 어떠한 작업을 해주기 위해서 사용한다.

3) Shovel은 어떻게 동작하는가

대략적으로 Shovel의 동작방식을 이야기하자면, 아래와 같다.

  1. Source와 Destination이 커넥션을 맺는다.
  2. Source에 해당하는 큐에 들어온 메세지를 컨슈밍한다.
  3. Destination으로 Re-publish한다.


💻 Shovel 세팅하기


1) Docker 컨테이너 실행

Shovel을 제대로(?) 구축하려면 2개 이상의 RabbitMQ 브로커가 있어야한다. 그래서 아래와 같은 docker-compose.yml을 작성한 후, 컨테이너를 실행하자.

services:
  rabbitmq-1:
    image: rabbitmq:3.13.3-management
    container_name: rabbitmq-1
    hostname: rabbitmq-1
    ports:
      - 15672:15672
      - 5672:5672
  rabbitmq-2:
    image: rabbitmq:3.13.3-management
    container_name: rabbitmq-2
    hostname: rabbitmq-2
    ports:
      - 15673:15672
      - 5673:5672

2) Shovel 플러그인 활성화

rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management

위에서 생성한 두 컨테이너에 접속해서 위 명령어를 실행해주자.

3) 플러그인 활성화 확인

RabbitMQ Management UI의 Admin 탭에 들어가보면, 이렇게 Shovel 관련 섹션이 생성된 것을 확인할 수 있다.

4) 큐 생성

지금 세팅할 Shovel은 특정 큐에서 다른 큐로 데이터를 포워딩하는 것이므로, 두 RabbitMQ 브로커에 큐를 생성해주자.

나는 q.test라는 같은 이름의 큐를 각각 생성해주었다.

5) Shovel 생성

amqp 0.9.1 프로토콜을 사용해서 위와 같이 Shovel을 생성해준다.

6) Shovel 생성 확인

Admin > Shovel Status 탭으로 이동해보면, 이렇게 Shovel이 생성되어 있는 것을 확인할 수 있다.

Shovel 생성이 완료됐으니, 이제 메세지 포워딩이 잘 되는지 확인해보자.



👀 데이터 포워딩 테스트


1) rabbitmq-1 브로커에서 메세지 발행

먼저, rabbitmq-1 브로커에서 몇 개의 메세지를 발행해보자.

2) rabbitmq-2 브로커에서 메세지 확인

rabbitmq-2 브로커에 들어가서 큐에 메세지가 쌓여 있는지 확인해보면, 잘 쌓여있는 것을 확인할 수 있다.

또, 이 메세지들을 컨슈밍해보면, 헤더에 Shovel과 관련된 정보가 들어가 있는 것 또한 확인할 수 있다.

이로써 rabbitmq-1에 들어온 메세지들이 rabbitmq-2로 잘 포워딩된 것을 확인할 수 있다.



🙏 참고


0개의 댓글

관련 채용 정보