Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

갱스

RabbitMQ 본문

Network

RabbitMQ

pknam 2015. 2. 13. 16:27



RabbitMQ
AMQP(Advanced Message Queuing Protocol)를 구현한 server 프로그램. erlang으로 구현되었다
표준화된 프로토콜의 구현이기 때문에 AMQP를 구현한 library만 있으면 language/OS에 상관없이 이용 가능하다
그러니까 rabbitmq를 공부한다는 건 amqp 프로토콜을 공부한다는 거다..


설치
$ sudo apt-get install rabbitmq-server


서버 재시작
$ sudo service rabbitmq-server restart


용어
queue : 메시지 큐
consume : queue에서 메시지를 가져온다
publish : 서버에 메시지를 보낸다 (정확하게는 exchage에 메시지를 보낸다)

queue 생성 시 durable속성
durable 속성이 false인 queue는 서버가 재시작되면 사라짐.
durable 속성이 true인 queue는 서버가 재시작되어도 queue가 비어있는 상태로 살아있음.
메시지까지 보존하려면 메시지를 publish할 때 persistence속성을 주어야 함

하나의 queue를 여러 consumer가 물고 있을 때
consumer들에게 round robin 방식으로 돌아가면서 메시지를 나눠줌.


QoS 기능
busy 하지 않은 consumer들이 우선 메시지를 가져가도록 설정가능


publish/subscribe(발행/구독) 패턴 
한번 publish된 메시지를 다수의 consumer가 가져가는 방식
줄여서 pub/sub 패턴


message를 publish하면 지정한 exchange로 보내진다.
그리고 exchage type에 따라 다른 방식으로 queue들에 메시지가 분배된다.


exchange type 4가지
fanout : 들어오는 메시지를 bind된 모든 queue에 전달한다
direct : 메시지의 routing key와 같은 routing key로 bind된 queue들만 골라서 메시지를 나눠준다.
topic : routing key를 구성할 때 여러 주제를 .으로 구분하여  *.*.* 와 같이 구성. *에는 단어 한개가 들어감. consume할 때 routing key에 *또는 #를 넣어서 특정 주제만을 subscribe하거나 여러 주제를 동시에 subscribe할 수 있음.
headers : (?)많이 쓰는것같진 않음.


Comments