今天使用rabbitmq的confirm模式,书上介绍的是pika版本是0.9.6,但是我用的是别的版本,发现这样的错误
Traceback (most recent call last):
File "hello_world_producer1.py", line 27, in <module>
channel.confirm_delivery(confirm_handler)
TypeError: confirm_delivery() takes exactly 1 argument (2 given)
看官网后发现错了,应该改成下面的样式:
#!/usr/bin/env python #coding:utf-8 import pika,sys
from pika import spec credentials=pika.PlainCredentials('guest','guest')
conn_params=pika.ConnectionParameters('localhost',credentials=credentials) conn_broker=pika.BlockingConnection(conn_params) channel=conn_broker.channel()
channel.confirm_delivery()
#channel.confirm_delivery()
msg=sys.argv[1]
msg_props=pika.BasicProperties()
msg_props.content_type="text/plain" msg_ids=[]
if channel.basic_publish(body=msg, exchange="hello-exchange", properties=msg_props, routing_key='hola'):
print 'Confirm receive!'
else:
print 'Message lost'
#msg_ids.append(len(msg_ids)+1)
channel.close()
##这里参考https://github.com/rabbitinaction/sourcecode/issues/9
##https://pika.readthedocs.io/en/latest/examples/blocking_delivery_confirmations.html