我有一个基于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 consumer和publisher的异步实现,
我遇到了amqp。他们的主页上大多数都有API参考,但未记录任何使用模式或示例。
这是一个足够稳定的库可供挖掘吗? 还是有更好的选择?