增强RabbitMQ库pika的可靠性,或者有更好的替代方法

时间:2018-07-20 10:47:51

标签: python rabbitmq pika reliability

简要概述

我有一个基于Python 3.6+的微服务架构,该架构每天通过RabbitMQ处理超过1000万笔交易。

该体系结构的重要组成部分是作为multiprocessing.Process实例启动的一组16-32个并行使用者,它们从RabbitMQ获取并处理这些事务。

当前用于通过Python与RabbitMQ接口的库为pika

问题和挑战是什么?

pika的BlockingConnection适配器非常不可靠。我相信它会保持自己的轮询循环。在突然的交易突发中,连接断开了。

我通过tenacity Python库在抖动,指数退避模型中配置了重试,并监视基本异常pika.exceptions.AMQPError。

但是尽管采取了这种安全措施,连接却突然断开:

104:Connection Reset by Peer

in basic_publish
   raise exceptions.ChannelClosed()
pika.exceptions.ChannelClosed

查看pika consumerpublisher的异步实现,

  • 它看起来像是混乱的回调,没有正确记录的序列
  • 我假设要在基于多处理的体系结构中的单独线程中运行此基于事件循环的使用者,并将结果传递回实际需要它的流程,会增加复杂性

问题是:什么是pika的更稳定替代品?

我遇到了amqp。他们的主页上大多数都有API参考,但未记录任何使用模式或示例。

这是一个足够稳定的库可供挖掘吗? 还是有更好的选择?

0 个答案:

没有答案