반응형
RabbitMQ를 사용하는 프로젝트를 시작하며 테스트 코드를 짜기 위해 RabbitMQ로 Produce, Consume 하는 코드를 실습해보았다.
- producer.py
import sys
import pika
queue = 'queuename'
message = ' '.join(sys.argv[1:])
# Connection 생성
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='10.120.1.99'
, port=5672
, virtual_host='/'
, credentials=pika.PlainCredentials('guest', 'guest') # username, password
))
# channel 생성
channel = connection.channel()
# Message Queue 생성
channel.queue_declare(queue=queue)
# Message 전송
channel.basic_publish(
exchange=''
, routing_key=queue
, body=message
)
print(" [x] Sent " + message )
# Connection 종료
connection.close()
- consumer.py
import pika
queue = 'queuename'
# Connection 생성
connection = pika.BlockingConnection(pika.URLParameters('amqp://guest:guest@10.120.1.99:5672/'))
# Channel 생성
channel = connection.channel()
# Message Queue 생성 (이미 생성되어 있다면 새로 생성하지 않음)
channel.queue_declare(queue=queue)
# callback 함수 정의
def callback(ch, method, properties, body):
test_function(body) # 사용자 정의 함수
ch.basic_ack( delivery_tag=method.delivery_tag )
# queue에서 consume하여 callback 실행
channel.basic_consume( queue, callback )
# Consume 시작
channel.start_consuming()
반응형