RabbitMQ pika连接错误和不一致

时间:2016-10-31 19:33:24

标签: python rabbitmq pika

def response(return_JSON):
    connection = pika.BlockingConnection(pika.ConnectionParameters(host=HOST))
    channel = connection.channel()
    channel.exchange_declare(exchange=EXCHANGE, type='direct', durable='True')
    channel.queue_declare(queue=QUEUE_NAME, durable='True')
    channel.queue_bind(exchange=EXCHANGE, queue=QUEUE_NAME)
    channel.basic_publish(exchange=EXCHANGE, routing_key=RESPONSE_ROUTING_KEY, body=return_JSON)
    connection.close()  
    print "  [x] Finished sending msg to sender..."


def callback(ch, method, properties, body):
    print "  [x] Received message from sender!"
    print body
    result_JSON = Work().compute(json.loads(body))
    if result_JSON is not None:
        #result_JSON = json.dumps(result_JSON)
        response(result_JSON)
        channel.basic_ack(delivery_tag = method.delivery_tag)
        print "Acknowledged to sender"

if __name__ == '__main__':
    connection = pika.BlockingConnection(pika.ConnectionParameters(host=HOST))
    channel = connection.channel()
    channel.queue_declare(queue=QUEUE_NAME, durable='True')
    channel.basic_consume(callback, queue=QUEUE_NAME, no_ack=False)
    print "  [*] Waiting for messages. To exit press CTRL+C"
    channel.start_consuming()

这通常会持续一段时间然后摔倒。只需要一次消费一条消息,处理它们并发回一条带有不同路由KEY的响应消息。是否有一种更智能,更可靠的方法来一次创建一个最小的消费者处理消息。

错误信息是:

Connection reset by peer

0 个答案:

没有答案