Spring/ETC

Rabbit MQ 기본 개념

YoonJong 2023. 5. 6. 22:36
728x90

Rabbit MQ 에 대해 알아보기 전에 AMQP 에 대해서 알아보겠습니다.

 

AMQP 는 Advanced Message Queuing Protocol 입니다.

해석 그대로 프로토콜이기 때문에, MQ 를 구현하는 제품은 여러가지가 있으나, Rabbit MQ를 많이 사용합니다.

 

AMQP 에 관련해서 해당 블로그를 참고하면 되겠습니다.

https://brunch.co.kr/@springboot/6

 

스프링 클라우드, MQ 도입 사례(3)

- 관련 연구 2 - RabbitMQ | 스프링 클라우드(Spring Cloud), MQ(Message Queuing) 를 연동한 서비스 도입 사례를 공유합니다. 도입 배경 및 아키텍처 결정 관련 연구 1 - 기본 개념 관련 연구 2 - RabbitMQ (현재글

brunch.co.kr

 

Rabbit MQ 는 AMQP 를 구현한 오픈소스 메세지 브로커입니다.

producer 에서 consumers 로 메시지(요청)을 전달할 때 중간에서 브로커 역할을 합니다.

 

 

Producer : 요청을 보내는 주체입니다. 

consumer : producer 에게 메시지(요청)를 받아 처리하는 주체입니다.

exchange : producer 로부터 전달받은 메시지를 어떤 Queue에 보낼지 결정합니다.

Queue : consumer 가 메시지를 consume 하기 전까지 보관하는 장소입니다.

binding : exchange와 queue 와의 관계를 나타냅니다. binding 규칙에 따라 어떤 queue에 보낼지 결정됩니다.

 

 

Rabbit MQ 를 설치하고 어떤 형식으로 설정하는지 궁금해 Guest 로 로그인했습니다.

http://blog.moramcnt.com/?p=1156 

 

 

 

Name : exchange 이름을 설정합니다

Type : Direct / Fanout / Topic / Headers 4개의 종류가 있습니다.

 - Direct : 라우팅 키가 정확히 일치하는 Queue 에 메시지를 전송합니다.

 - Topic : 라우팅 키 패턴이 일치하는 Queue 에 메시지를 전송합니다.

 - Headers : [key:value] 로 이루어진 header 값을 기준으로 일치하는 Queue 에 메시지를 전송합니다.

 - Fanout : 해당 Exchange에 등록된 모든 Queue 에 메시지를 전송합니다.

Durability : 브로커가 재시작 될 때 남아있는지에 대한 여부를 설정합니다.

 - Durable : 재시작되면 디스크에 저장되어 남아있습니다.

 - Transient : 재시작되면 사라집니다.

Auto delete : 마지막 Queue 연결이 해제되면 삭제됩니다.

Internal : 외부에서 직접 엑세스 할 수 있을지에 대한 여부를 설정합니다.

Arguemtns : Exchange에서 처리할 수 없는 메시지를 보낼 대체 Exchange를 지정할 수 있습니다.

 

 

 

 

Exchange 와 다른 Type 만 보겠습니다.

자세한 내용은 GPT 나 실제 적용 사례의 블로그를 참고하는 것이 좋습니다.

일반적인 메시징 시스템에서는 classic 을 보통 사용합니다.

 

Default for virtual host : 기본값을 사용합니다.

classic : 일반적인 유형입니다. 메모리와 디스크를 모두 사용하여 메시지를 저장합니다. (FIFO 방식)

Quorum : 메시지를 복제하여 안정성을 보장합니다. 

stream : 매우 큰 데이터를 처리하는데 특화되어 있습니다.

 

 

참고하면 좋을만한 자료입니다.

https://velog.io/@sdb016/RabbitMQ-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90

 

[RabbitMQ] 기초 개념

AMQP를 구현한 오픈소스 메세지 브로커이다.producers에서 consumers로 메세지(요청)를 전달할 때 중간에서 브로커 역할을 한다.사용하는 케이스는 다음과 같다.요청을 많은 사용자에게 전달할 때요청

velog.io

https://spring.io/guides/gs/messaging-rabbitmq/

 

Spring | Home

Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.

spring.io

 

728x90