编写 mq_connection.py 文件(连接Mq)
import pika
host = "127.0.0.1"
port = "5672"
def mq_conn():
credentials = pika.PlainCredentials('admin', 'admin') # mq用户名和密码
# 虚拟队列需要指定参数 virtual_host,如果是默认的可以不填。
connection = pika.BlockingConnection(
pika.ConnectionParameters(host='127.0.0.1', port=5672, virtual_host='my_vhost', credentials=credentials))
channel = connection.channel()
return channel
from py_rabbitmq.mq_connection import mq_conn, pika
conn = mq_conn()
# 声明队列
conn.queue_declare(queue='hello')
for i in range(10):
conn.basic_publish(exchange='',
routing_key='hello',
body='Hello World!)
print("produce is body")
conn.close()
from py_rabbitmq.mq_connection import mq_conn
conn = mq_conn()
# 声明队列
conn.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
conn.basic_consume(queue='hello', auto_ack=True, on_message_callback=callback)
conn.start_consuming()
auto_ack 参数 是否做消息确认 默认为Fase 如果为True consume会向RabbitMQ发送回执ACK, Mq会认为该条数据已被处理, 队列中的消息就会被删除