rabbitmq 发送方确认模式来确认投递——基于pika 0.10.0

一,网上和书上给的实例报错

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.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
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值