갱스
RabbitMQ 본문
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