RabbitMQ
-
[RabbitMQ] 5. Topics, Topic(Pattern) ExchangeRabbitMQ 2019. 1. 7. 19:39
이번에는 특정 패턴을 기준으로 메시지를 선별하여 보낼 수 있는 exchage를 알아본다.direct exchange는 한가지 rule(bindingKey)만을 기준으로 메시지 선별이 가능했다.topic exchange 이녀석은 메시지 선별을 위해 여러 패턴을 설정할 수 있다. 이녀석은 무조건 routingKey를 점으로 구분된 단어 리스트로 넣어야한다.("stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit") - Topic Exchange특정 routingKey와 함께 전송된 메시지는 일치하는 바인딩 키로 연결된 모든 큐로 전달한다.(*는 1글자, #은 0개 이상)라우팅 키를 다음과 같이 정의할 때 ".." 각 큐에 걸려있는 바인딩 룰의 의미는 다음과 같다. Q1 :..
-
[RabbitMQ] 4. Routing, Direct ExchangeRabbitMQ 2019. 1. 6. 16:14
이번에는 바인딩을 큐 별로 하나씩 직접 연결하여, 특정 메시지만 선택적으로 받을 수 있는 컨슈머를 만들어본다.지난 로깅 예제에 추가로, 컨슈머 A는 전체 로그를 콘솔 출력하고, 컨슈머 B는 에러 로그만 파일로 저장해보자. channel.queueBind(queueName, EXCHANGE_NAME, "black");지난 시간에 봤었던 Binding은 exchange와 queue의 연결을 지정해줄 수 있는데 마지막 파라미터로 RoutingKey라는게 있었다.여기의 파라미터는 basicPublish의 routingKey와는 다른것으로 bindingKey로 이해하면 된다고 한다. bindingKey의 의미는 exchage의 type에 따라 다르게 동작한다.(이전 시간에 했었던 fanout exchage에서는 ..
-
[RabbitMQ] 3. Publish/Subscribe, Fanout(Broadcasting) ExchangeRabbitMQ 2019. 1. 5. 18:07
이번에는 같은 메시지를 여러 컨슈머에 배달하는 법을 알아본다. publish/subscribe 패턴이라고 한다.예시 상황으로 로그 메시지를 여러 컨슈머에 발송한다. 컨슈머 A는 로그를 콘솔 출력하고, 컨슈머 B는 디스크에 파일로 저장한다. * Wrap-UpA producer is a user application that sends messages.A queue is a buffer that stores messages.A consumer is a user application that receives messages. - Exchange무슨 뜻인지 정확하게 몰랐는데 드디어 설명이 나온다;RabbitMQ의 메시징 모델에서 핵심 아이디어는 producer는 어떤 메시지도 직접 queue로 메시지를 보내지는..
-
[RabbitMQ] 2. Work Queues, QosRabbitMQ 2019. 1. 1. 18:18
처리에 시간이 걸리는 메시지가 집중될 때를 대비해서 여러 컨슈머에 작업을 분배해서 배달할 수 있는 큐를 만들어보자작업이 나중에 끝나도록 스케줄 하는것 보다 작업을 메시지로 만들어 큐로 던진다.이러한 방법은 http 방식으로 처리하기 복잡한 웹 프로그램 환경에서 유용하다.기본 설정으로 MQ는 각 메시지를 다음 컨슈머에게 순차적으로 전달한다(라운드 로빈). 2개 이상 컨슈머를 실행시켜두고 여러 메시지를 보내니 순차적으로 핸들링 하는것을 확인 할 수 있었다. MQ는 메시지를 배달하는 즉시 해당 메시지에 삭제 마킹을 하는데 워커에서 작업을 처리중일 때 kill을 날리면 메시지를 유실한다. 메시지 유실을 방지하기 위해 MQ는 message acknowledgments 를 제공한다. 배달 후 메시지 삭제 마킹을 하..
-
[RabbitMQ] 1. Hello World, basicPublish/basicConsumeRabbitMQ 2018. 12. 30. 18:02
- 소개RabbitMQ는 메시지 브로커이다. 메시지를 받아서 발송한다. 우체국으로 생각해도 된다.보내고싶은 메일을 우체통에 넣으면 우체부가 원하는 수신자에 배달을 보장한다.하지만 종이를 취급 하지는 않는다. 대신에 binary-data를 받아서 저장하고 발송한다. - 용어(Jargon)Producing(Sending) : 메시지를 발송하는 프로그램을 Producer 라고 한다.Queue(PostBox) : MQ 내부에 있는 우체국Consuming(Receiving) : 메시지를 받으려고 기다리는 프로그램을 Consumer 라고 한다. 큐는 장비의 메모리 + 디스크 공간만 사용하며, 큰 메시지 버퍼라고 생각하면 된다.다수의 Producer가 하나의 Q로 메시지를 보낼 수 있고, 다수의 Consumer가 하..