블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


RabbitMQ 공부 노트

클라우드 컴퓨팅 & NoSQL/RabbitMq | 2013.09.03 21:45 | Posted by 조대협

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

 

Rabbit MQ 기본 컨셉

 

AMQP (Advanced Message Queuing Protocol)

Broker : 메세지 Queue 시스템을 broker라고 하낟.

Queue

 

Queue의 주요 속성

Ÿ   name

Ÿ   durable 속성 : 메세지를 디스크에 저장. memory에 저장하는 것은 transient라고 한다.

Ÿ   auto-delete : 모든 consumer unsubscribe하면, 해당 queue는 자동으로 없어진다.

* Queue를 만드는 것을 declare라고 하며, 애플리케이션 코드에서도 쉽게 만들 수 있다. 만약 해당 큐가 이미 존재하고 있다면, 다시 queue를 만들지 않고, queue가 없을 경우에만 만든다. (기존의 JMS 기반의 queuing 시스템과 접근 방법이 좀 틀린 듯. 기존 JMS 시스템은 큐 시스템 admin console등에서 queue를 선언했어야 하지만, rabbit mq는 코드를 통해서 queue를 생성 하는 것이 가능하기 때문에, 손쉽게 배포가 가능하다.)

 

Exchange

 

Exchange 타입

 

Ÿ   Default Exchange

Ÿ   Direct Exchange : Queue Routing Key Binding이 되어 있고, Exchange Routing Key가 들어오면, Exchange Binding되어 있는 Queue중에서,   Key Mapping되어 있는 Queue로 메세지를 라우팅 한다.

Ÿ   Fan out Exchange : Routing Key에 상관 없이 Exchange Binding되어 있는 모든 Queue에 메세지를 라우팅 한다. (1:N 관계로, 모든 Queue에 메세지를 복제해서 라우팅 한다.)

Ÿ   Topic Exchange : Exchange mapping 되어 있는 Queue중에서 Routing key가 패턴에 맞는 Queue로 모두 메세지를 라우팅 한다.

Ÿ   Headers Exchange

 

Binding : Exchange Queue를 연결하는 것을 binding이라고 하며, Binding routing key Exchange type attributeoptional로 동반한다. (routing key는 일종의 filter key 처럼 동작 한다.)

Connection : 물리적인 TCP Connection, 보안이 필요할 경우 TLS(SSL) Connection을 사용할 수 있음.

Channel : 하나의 물리적인 connection 내에 생성되는 가상 논리적인 connection. Consumer process thread는 각자 이 channel을 통해서 queue에 연결 될 수 있다.

Virtual Host : 웹서버의 virtual host concept과 같이, 하나의 물리적인 서버에 여러 개의 가상 서버를 만들 수 있다.

Message Attributes and Payload

 

메세지 구조 : Header, Properties, byte[] data

 

트렌젝션 관리 : rabbit mq XA 기반의 분산 트렌젝션은 지원하지 않음. local 단위에서 ack 받으면 성공 처리함.

 

Clustering HA 구성

 

'클라우드 컴퓨팅 & NoSQL > RabbitMq' 카테고리의 다른 글

RabbitMQ 기본 기동  (1) 2014.01.02
RabbitMQ 공부 노트  (0) 2013.09.03
RabbitMQ + Spring  (0) 2013.08.27
RabbitMQ multi threaded read message consumer  (1) 2013.08.27
RabbitMQ - Receive Message  (0) 2013.08.27
RabbitMQ - Send Message  (0) 2013.08.27
본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요