티스토리 뷰

MQ

AMQP Exchange 종류

파미페럿 2021. 9. 10. 13:30

https://pamyferret.tistory.com/38

 

Message Queue란? (기본 동작 방식 및 용어)

회사를 이직하고나니까 많은 사용자를 고려해서 Message Queue에 메시지를 넣고 컨슈밍해서 기능을 비동기적으로 처리하는게 많았다. 그래서 앞으로 회사에서 익히고 혼자서 공부한 MQ에 대한 내용

pamyferret.tistory.com

 

 

저번 글에 AMQP를 기반으로 메시지 큐가 무엇이고 어떻게 동작하는지 정리했었다.

 

AMQP란?

예전에도 AMQP가 있기 전까지도 예전에 MQ를 많이 사용해왔었는데 그 때는 표준 프로토콜이 없어서 뒤죽박죽이었다고 생각하면 된다. 하지만 AMQP라는 표준 프로토콜, 즉 일종의 규약(약속)이 생겨서 위의 'Message Queue란? (기본 동작 방식 및 용어)' 글에서 얘기하는 Producer, Consumer 등이 AMQP로 인해 정의되었다.

 

 

AMQP Exchange 종류

exchange는 producer가 보내온 메시지를 바인딩 규칙에 따라 큐에 분배를 한다.

바로 이 바인딩 규칙은 어떤 exchange를 사용하느냐에 따라 설정할 수 있는 방법이 다르다.

 

 

Direct Exchange

제일 기본인 exchange이다. 'amq.direct'와 같이 exchange 이름 뒤에 '.direct'를 붙여서 만든다.

큐에 쌓이는 메시지에는 routing key 값이 있는데 이 라우팅 키 값으로 설정해놓은 큐로 해당 메시지를 라우팅 하는 exchange이다.

간단하게 라우팅 키와 일치하는 큐로 보내준다고 생각하면 된다.

 

 

Topic Exchange

direct exchange와 비슷하다. 딱 메시지의 라우팅 키와 일치하는 큐로 라우팅 해주는게 direct exchange라면 그것보다 좀 더 유연하게 사용할 수 있는 것이 topic exchange이다.

메시지에 라우팅 키에 대한 패턴(와일드 카드)를 보고 그것과 일치하는 큐로 메시지를 라우팅 해준다.

 

 

Fanout Exchange

fanout exchange는 제일 심플한 라우팅 방법을 가진 exchange이다.

받은 메시지를 복사해서 exchange에 연결된 모든 큐에 전달하는 것이다. 메시지를 모든 큐에 브로드캐스팅할 때 사용하면 좋은 exchange이다.

단, 이 경우 메시지에 있는 라우팅 키는 무시된다. (복사 되서 모든 큐에 보내지므로 당연한 이야기다.)

 

 

Header Exchange

이 exchange는 위의 exchange와 다르게 라우팅 키가 아니라 다른 값으로 메시지를 큐에 라우팅 한다. 따라서 메시지에 라우팅 키가 있어도 라우팅 키를 무시한다.

대신 메시지에 있는 헤더 값을 통해 라우팅을 하는데, MessagePostProcessor를 사용해야하는 번거로움이 있다. 대신 라우팅 키라는 하나의 값으로만 라우팅 되는 위의 exchange와 달리 헤더의 여러 값들을 이용해서 라우팅을 할 수 있다.

또한 헤더에 'x-match'라는 값을 통해 헤더의 모든 값들이 일치해야하는지 아니면 일부만 일치해야하는지 정의할 수 있다. 또한 이 'x-match' 헤더 값을 이와 같은 설정 값으로 사용하기 위해서 'x-'로 시작하는 헤더 값은 라우팅 하는데 사용되지 않는다.

 

- x-match = any: 헤더의 일부 값만 일치해도 해당 큐로 라우팅

- x-match = all: 헤더의 모든 값이 일치해야 해당 큐로 라우팅

 

 

 

처음 MQ에 대해 공부할 때는 이와 같은 exchange 종류가 레빗엠큐에서 정의하고 제공해주는 것이라고 생각했다. 하지만 이러한 exchange 정의는 레빗엠큐가 아닌 AMQP라는 표준 프로토콜에 정의되어 있는 것이고 레빗엠큐가 AMQP를 구현한 것이기 때문에 이러한 exchange 타입들을 제공하는 것이다.

 

 

 

 

✋ RabbitMQ에서 설명하는 AMQP 0-9-1 Exchange

https://www.rabbitmq.com/tutorials/amqp-concepts.html

 

AMQP 0-9-1 Model Explained — RabbitMQ

AMQP 0-9-1 Model Explained This guide provides an overview of the AMQP 0-9-1 protocol, one of the protocols supported by RabbitMQ. AMQP 0-9-1 (Advanced Message Queuing Protocol) is a messaging protocol that enables conforming client applications to communi

www.rabbitmq.com

 

 

 

 

반응형

'MQ' 카테고리의 다른 글

Message Queue란? (AMQP에 기반한 기본 동작 방식 및 용어)  (0) 2021.09.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함