rabbitMQ消息队列 – ACK与泄露

Server 林涛 7794℃ 0评论

##ACK与泄露

ACK的原理由消费者发送回执,确认消费成功.发送者就不会在重复发送.

而rabbitMQ默认形式就是ACK的模式.所以说.上一节写的案例代码..是有BUG
在接收消息函数时.需通过如下方式传回ACK信息

function 接收消息回调($message)
{
    $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
}

代码的意思为,根据消息的delivery_info['channel']找到通道,并调用通道的basic_ack方法发送消息的确认内容.

##泄露问题


如果我们只是接受了消息,并进行处理.但是处理完后.没有发起ack就会导致服务器上的消息一直堆积.服务器会发送新的消息.同时会记录当前的这个链接有哪些消息一直还没回复.(服务器认为你会回复,一直等待)

如果消费者进程停止掉重启..就会重新接收所有消息

如需转载请注明: 转载自26点的博客

本文链接地址: rabbitMQ消息队列 – ACK与泄露

转载请注明:26点的博客 » rabbitMQ消息队列 – ACK与泄露

喜欢 (0)
发表我的评论
取消评论

表情