Python使用pika连接rabbitmq 发表于 2018-07-25 | 分类于 python | 一个连接rabbitmq的python例子. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465# coding: utf-8import jsonimport pika# from selenium.webdriver.common.by import Byfrom house_info import HouseInfo# CONFIG AREAAMQP_CONFIG = { 'host': '127.0.0.1', 'port': 5672, 'username': 'guest', 'password': 'guest'}AMQP_QUEUE_NAME = 'house-inquery'AMQP_FEEDBACK_QUEUE_NAME = 'house-inquery-result'# 因为反馈回去的队列要求在不同队列,所以重新建立了一个新的队列连接def process_feedback(msg): mq_credential = pika.PlainCredentials( username=AMQP_CONFIG['username'], password=AMQP_CONFIG['password'] ) mq_conn = pika.BlockingConnection(pika.ConnectionParameters( host=AMQP_CONFIG['host'], credentials=mq_credential )) mq_channel = mq_conn.channel() mq_channel.queue_declare(queue=AMQP_FEEDBACK_QUEUE_NAME, durable=True) return mq_channel.basic_publish(exchange='', routing_key=AMQP_FEEDBACK_QUEUE_NAME, body=msg, properties=pika.BasicProperties( delivery_mode=2, content_encoding='UTF-8', content_type='text/plain' ) )user_pwd = pika.PlainCredentials(AMQP_CONFIG['username'], AMQP_CONFIG['password'])s_conn = pika.BlockingConnection(pika.ConnectionParameters(AMQP_CONFIG['host'], credentials=user_pwd))channel = s_conn.channel()channel.queue_declare(queue=AMQP_QUEUE_NAME, durable=True)def callback(ch, method, properties, body): print(body) query_data = json.loads(body) if not query_data: return try: # 一些业务逻辑代码 # 应答消息 ch.basic_ack(delivery_tag=method.delivery_tag) except Exception as e: print(e)# 设置一次只获取一条消息处理channel.basic_qos(prefetch_count=1)# 启用ack,防止异常消息丢失 确认处理后再删除消息channel.basic_consume(callback, queue=AMQP_QUEUE_NAME, no_ack=False)channel.start_consuming() 给作者打一针鸡血 赏 微信打赏 支付宝打赏