DB&NoSQL/RabbitMQ(7)
-
RabbitMQ Tutorial - 6. RPC
Remote Procedure Call (RPC) 두번째 튜토리얼에서 다수의 작업자들사이에 시간이 소요되는 업무에 대해서 분산처리하는 Work Queue에 대한 사용법에 대해서 배웠습니다. 원격 컴퓨터에서 함수를 호출하고 그 결과를 기다려야 할 필요가 있다면?글쎄, 그런 좀 어려운 이야기 인데.이 패턴은 일반적으로 RPC 라고 알려진 패턴이죠. 이 튜토리얼에서는 클라이언트 와 확장가능한 RPC 서버 -RPC 시스템을 빌드하기위해 RabbitMQ을 사용 할 것입니다.분산처리할 가치가 있는 시간이 걸리는 업무를 갖고 있지 않기 때문에, 우리는 피보나치 수열(Fibonacci numbers)을 리턴하는 더미 RPC 서비스를 만들도록 하겠습니다. 1. Client interface RPC 서비스를 사용할수 있는..
2017.05.17 -
RabbitMQ Tutorial - 5. Topics
Topics : Receiving messages based on a pattern (topics) 이전 장에서는 우리 로깅 시스템을 발전시켰습니다.오직 더미 방송하는 능력의 fanout Exchange를 사용하는 대신에direct Exchange를 사용했고, 로그를 선택적으로 받는 가능성을 얻었습니다. 우리 시스템을 발전시키기 위해 direct Exchange를 사용하는 것 역시, 제한을 가지고 있습니다.- 여러가지 조건(multiple criteria)에 기반한 라우팅을 할수 없습니다. 우리 로깅 시스템에서 오직 severity에 기반한것 외에도, 로그가 발행된 소스 상의 로그들도 구독하길 원할수도 있습니다. severity(info/warn/crit...) 와 facility(auth/cron/ke..
2017.05.17 -
RabbitMQ Tutorial -4. Routing
Routing : Receiving messages selectly 앞선 튜토리얼에서는 간단한 로깅 시스템을 만들었죠.많은 수신자들에게 로그 메시지들을 방송할 수 있었습니다. 이 튜토리얼에서, 거기에 기능 한개를 추가하도록 할께요.오직 메세지들의 부분집합(subset).. 특정 메시지들만 구독 가능하게 만들겁니다.예를 들어, 로그 파일(디스크 영역에 저장하기 위해)에 치명적인 에러 메시지만 전달할수 있게 하고, 반면, 모든 로그 메시지는 콘솔에 출력할께요. 1.Bidings 앞서서 바인딩은 만들었고, 여러분은 재호출 할 코드는 아래와 같습니다. channel.queueBind(queueName, EXCHANGE_NAME, ""); 바인딩은 exchange 와 queue 간의 관계죠.이건 "이 큐는 이 e..
2017.05.16 -
RabbitMQ Tutorial -3. Publish / Subscribe
요약 메시지가 특정 큐에 추가되어야만 하나? 메시지가 많은 큐들에 추가되어야만 하나?아니면 메시지가 버려져야 하나? 이것에 대한 규칙은 exchange type에 의해 정의된다.queueDelcare()에 파라미터를 넣지 않았을때, 비영속적이고, 베타적이며, 자동 삭제되는 큐를 생성해준다. exchange와 큐와의 관계를 binding이라고 합니다. 앞서선, work queue를 만들었죠.work queue은 정확하게 하나의 작업자에게 배달 된다는 것이다라는 것이 work queu의 뒤에 가정입니다.이번에는 하나의 메시지를 여러개의 작업자에게 배달하는 것이다.해당 패턴이 publish / subscribe 로 알려졌다. 해당 패턴을 설명하기 위해서, 간단한 로깅 시스템을 만들어 본다.이것은 두개의 프로그..
2017.05.16 -
RabbitMQ Tutorial -2. Work Queues
정리하면 아래와 같다. 다수의 Consumer를 만들어 대기를 시키면... RabbitMQ에서는 Round-Robin 분배를 통해,비어있는 Consumer에게 메시지를 보냅니다. 공정하게 분배 하는 설정도 있으며,basicQos 메소드를 prefetchCount = 1 설정하면, RabbitMQ에게 작업자가 한번에 하나 이상의 메시지를 주지 않도록 한다.Consumer는 RabbitMQ에게 ack(nowlgdegment)을 되돌려 주는데.이는 특정 메시지가 처리되었음을 알려주고, RabbitMQ가 저장된 해당 메시지를 지울 수 있게 해 준다. 또한 RabbitMQ 서버가 죽어 있더라도.. 메시지들이 사라지지 않는 내구력을 보장해주고 있는데, RabbitMQ가 queue을 잊지 않기 위해, queue를 d..
2017.05.16 -
RabbitMQ Tutorial -1. Producer, Queue, Consumer의 정의와 Message Send & Receive
RabbitMQ의 튜토리얼을 읽어보도록 합니다 Hello World - The simplest thing that does somethinghttps://www.rabbitmq.com/tutorials/tutorial-one-java.html 1.Introduction RabbitMQ는 메시지 브로커 입니다: 메세지들을 받고 전달합니다.우체국과 같다고 볼수 있는데요, 여러분이 메일을 우체통에 넣을땐, 우체부가 수신자에게 메일을 배달해줄것이라 확신할수 있죠.이런것처럼, RabbitMQ는 우체통, 우체국 그리고 우체부 랍니다. RabbitMQ와 우체국가 가장 다른 점은 종이를 다루지 않고, 이진 데이터 덩어리인 메시지들을 받고, 저장하고 전달하는 것입니다. RabbitMQ 와 일반적인 메시징은 몇가지 특정 ..
2017.05.16