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을 attribute로 optional로 동반한다. (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 + 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 |