P: Message를 보내는 Program. Producer
Quere: RabbitMQ안에서 동작.
Producer Message는 RabbitMQ를 통해서 Application으로 간다.
여러 Producer를 한 개의 queue로 보낼 수 있다.
C: Consumer. Message를 받기를 기다리는 Program.
- Producer,Consumer,Broker는 같은 장치에 있을 필요는 없다.
1. Hello World
Producer는 Single Message를 전송하고 Consumer는 그 Message를 받아 출력한다.
2. Work Queues
Round-Robin 방식으로 동작한다. RabbitMQ는 순서대로 다음 Consumer에게 메시지를 보낸다. 이 방식은 짧은 HTTP 요청 창이 떠있동안 복잡한 작업을 처리 할 수 없는 웹 어플리케이션에 유용하다. C1,C2는 순서대로 서로 다른 메시지를 읽어 작업을 하지만 하는 일은 같다.
3. Publish/Subscribe
RabbitMQ 모델의 핵심은 Producer가 Queue에 직접적으로 Message를 보내지 않는다는 것이다. Producer는 Exchange에 Message를 보내고 Exchange는 그 Message를 Queue에 전달한다. Exchange는 direct, topic, headers, fanout 타입 등이 있다.
위 그림은 팬 아웃 방식으로 X(enchangee)가 C1,C2에 같은 메시지를 전달하지만 C1,C2는 서로 다른 일을 한다.
4. Routing
Direct, Exact Matching방식
Key가 있어 Binding 할 경우 Key를 비교하여 Queue에 삽입 된다. C1은 error Key일 경우만 동작하며, C2는 info, error, warning Key일 경우 동작하는 것을 알 수 있다. C1,C2에 전달되는 Message와 하는 작업 모두 다르다.
5. Topics
Pattern Matching방식
Key값을 비교할 때 User가 설정한 Pattern으로 매칭한다. Key는 “.” 으로 구분하며 Token으로 나눠지고 “ * ”은 1개의 단어를 의미하고, “ # ”은여러 개의 단어를 의미한다.