一,网上和书上给的实例报错
rabbitmq实战上曾经在<清单2.3>上写了一个
带有确认功能的Hello World生产者
但是这个代码实际上会报错的像这样:
channel.confirm_delivery(callback=confirm_handle)TypeError: confirm_delivery() got an unexpected keyword argument 'callback'
在网上查了很久,也没有一个详细的说明
二,看pika的源代码
后面自己看了pika的源代码,在channel的basic_publish里看到这样一段话:
也就是说在BlockingConnection中,basic_publish实现了书中confirm_handler这个函数,所以我们把书中的confirm_handler去掉,把调用的:
channel.confirm_delivery(callback=confirm_handle)
改成: channel.confirm_delivery()
改成: channel.confirm_delivery()
把:
channel.basic_publish(body=msg,exchange="hello-exchange",properties=msg_props,routing_key=queuename)
改成
改成
ack = channel.basic_publish(body=msg,exchange="hello-exchange",properties=msg_props,routing_key=queuename)
if ack == True:
print "put message to rabbitmq successed!"
else:
print "put message to rabbitmq failed"
也就是说ack返回True证明生产者成功发送到rabbitmq