Python与RabbitMQ

作者: 眼君 | 来源:发表于2017-12-08 11:43 被阅读7次

连接MQ

首先,无论是上传和获取数据,都需要先连接MQ,确认(创建)队列。

连接MQ

上传数据

在建立连接后,就要开始上传和下载数据,上传数据代码如下:

上传数据

下载数据

下载数据的代码部分如下:

下载数据

这里有一个值得注意的地方是channel.basic_consume方法有一个参数no_ack:

如果我们设置的是no_ack=True,代表每次Consumer接到数据后,而不管是否处理完成,RabbitMQ Server会立即把这个Message标记为完成,然后从queue中删除了。如果在这个过程中,Consumer出错了,异常退出了,而数据还没有处理完成,那么非常不幸,这段数据就丢失了。

所有我们需要ack进行确认,即在处理数据后发送的ack,就是告诉RabbitMQ数据已经被接收,处理完成,RabbitMQ可以去安全的删除它了。如果Consumer退出了但没有发送ack,那么RabbitMQ就会把这个Message发送到下一个Consumer。这样就保证了在Consumer异常退出的情况下数据也不会丢失。

所以重新修改一下callback,以在消息处理完成后发送ack:

这样即使你通过Ctr-C中断了worker.py,那么Message也不会丢失了,它会被分发到下一个Consumer。

相关文章

  • Python与RabbitMQ

    连接MQ 首先,无论是上传和获取数据,都需要先连接MQ,确认(创建)队列。 上传数据 在建立连接后,就要开始上传和...

  • python使用RabbitMQ之pika客户端

    RabbitMQ是比较流行的MQ(Message Queue), 下面介绍下python连接RabbitMQ的客户...

  • Python操作RabbitMq详解

    Python 操作RabbitMq详解 一、简介: RabbitMq 是实现了高级消息队列协议(AMQP)的开源消...

  • django + celery 入门级总结

    环境: system: windows 10python: python2.7 1.RabbitMQ/Redis安...

  • Pika使用入门

    python RabbitMQ队列使用 关于python的queue介绍 关于python的队列,内置的有两种,一...

  • Python&Rabbitmq

    一、类库 Python操作rabbitmq的类库是pika 二、基本使用 首先粗略看下rabbitmq的基本介绍 ...

  • python rabbitmq

    拉镜像:docker pull rabbitmq:management启动:docker run -d --hos...

  • Redis作为消息队列与RabbitMQ的比较

    Redis作为消息队列与RabbitMQ的比较 RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议...

  • RabbitMq 安装与运行

    Ubuntu下RabbitMq 安装与运行 由于rabbitMq需要erlang语言的支持,在安装rabbitMq...

  • RabbitMQ Python端发送消息给Java端

    使用 RabbitMQ ,让Python程序向Java程序传送字符串消息,遇到了一些问题,在此记录。 Python...

网友评论

    本文标题:Python与RabbitMQ

    本文链接:https://www.haomeiwen.com/subject/mlceixtx.html