rabbitmq
-
RabbitMQ RPC(Remote procedure call)Cloud 2015. 3. 18. 09:00
예제소스 rpc_server.py #!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.queue_declare(queue='rpc_queue') def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2) def on_request(ch, method, props, body): n = int(body) print " [.] fib(%s)" % (n,) response = fib(n) ch..
-
RabbitMQ 토픽Cloud 2015. 3. 17. 09:00
특정 주제에 대한 메세지를 주고받는 기능. topic exchange로 보내지는 메세지는 반드시 routing_key를 가지고 있어야함. routing_key 크기는 255 바이트. 바인딩 키에 특수문자 사용가능. - * 하나의 단어를 의미 - # 없거나 하나이상의 단어를 의미 예제소스 emit_log_topic.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='topic_logs', type='topic'..
-
RabbitMQ 라우팅Cloud 2015. 3. 16. 09:00
원하는 메세지만 선택해서 받기 위한 기능. exchange와 큐를 바인딩하기위해 routing_key 매개변수를 이용함. 예제소스 emit_log_direct.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='direct_logs', type='direct') severity = sys.argv[1] if len(sys.argv) > 1 else 'info' message = ' '.join(sys.argv..
-
RabbitMQ를 이용한 메세지 발행/구독 모델Cloud 2015. 3. 13. 09:00
워크큐에서는 하나의 메세지가 하나의 워커에게만 전달되지만 발행/구독 모델에서는 하나의 메세지가 모든 구독자에게 전달이 되는 구조. rabbitmq에서는 메세지를 바로 큐로 보내지 않고 exchange에 먼저 보내는데, 이 exchange 타입을 fanout으로 설정 하면 됨. 예제 emit_log.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='logs', type='fanout') message = ' ..
-
RabbitMQ 작업 큐로 이용하기Cloud 2015. 3. 12. 09:00
메세지를 받아간 워커가 작업중에 죽더라도 해당 메세지는 큐에 남아서 다른 워커에게 전달할 수 있게 하기위해서 RabbitMQ는 acknowledgments를 지원함. ack(nowledgments)는 워커가 메세지를 받아가서 처리했다는걸 RabbitMQ에게 알려서 RabbitMQ가 그 메세지를 지울 수 있게함. ack없이 워커가 죽으면 RabbitMQ는 그 메세지가 정상적으로 처리되지 않았다고 판단해서 다른 워커에게 메세지를 전달. 타임아웃은 없음. RabbitMQ 서버가 죽더라도 큐안의 메세지를 보존하기위해서는 durable 옵션을 True로 설정해서 큐를 생성함. 라운드로빈방식으로 메세지를 보내서 특정 워커에 작업이 쌓이는 것을 방지하기위해 basic_qos 옵션을 줄 수 있음. 메세지 흐름 구조 예..
-
RabbitMQ 파악하기Cloud 2015. 3. 11. 09:00
메세지 브로커(broker). 메세지를 중개/관리해주는 역할을 수행.데이터 전달, 논블럭킹 운영, 푸시 알림. 발행/구독, 비동기 처리, 작업 큐 등의 역할. 지원 프로토콜 : AMQP 0-9-1/0-9/0-8/1.0, STOMP, MQTT, HTTP 설치OS : Mac OS X 10.10.2RabbitMQ 버전 : 3.4.4 파일 다운로드 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.4/rabbitmq-server-mac-standalone-3.4.4.tar.gztar zxvf rabbitmq-server-mac-standalone-3.4.4.tar.gzcd rabbitmq_server-3.4.4/ 서버 실행sbin/rabbitmq-serve..