실시간 데이터 처리/RabbitMQ

RabbitMQ Simple Queue

BUST 2017. 7. 3. 21:41

RabbitMQ Simple Queue

용어 정리

  • Producing
    • 메세지를 큐에 보낸다.
  • Queue
    • 우편통처럼 메세지를 저장해놓는 장소
  • Consuming
    • 큐를 통해 메시지를 받는다.

Hello World!

Sending

#!/usr/bin/env python 
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
  • connection과 channel를 생성
channel.queue_declare(queue='hello')
  • channel를 통해 queue 선언(declare) 한다.
channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
  • channel의 publish(sending)을 한다.
  • routing_key는 Queue 이름을 활용한다.
connection.close()
  • connection 연결 종료

Receiving

channel.queue_declare(queue='hello')
  • Sending이랑 동일하게 queue를 선언(declare)한다.
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
  • Receiving 받을 함수 handler를 정의한다.
channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True)
  • Queue가 'hello'의 consuming 설정을 한다.
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
  • consuming start

전체 코드

send.py

#!/usr/bin/env python 
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
 
channel.queue_declare(queue='hello')
 
channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()

receive.py

#!/usr/bin/env python 
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
 
channel.queue_declare(queue='hello')
 
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
 
channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()


'실시간 데이터 처리 > RabbitMQ' 카테고리의 다른 글

RabbitMQ Mirrored Queue  (0) 2018.06.29
RabbitMQ Exchange Fanout  (0) 2017.07.04
RabbitMQ  (0) 2017.07.03