谁能告诉我 python 中的 pika 和 kombu 消息传递库有什么区别?

Can anyone please tell me what are the differences between pika and kombu messaging library in python?

我想在我的应用程序中使用消息传递库来与 rabbitmq 交互。谁能解释一下 pika 和 kombu 图书馆的区别?

Kombu 和 pika 是两个不同的 python 库,它们从根本上服务于相同的目的:发布和使用消息 to/from 消息代理。

海带比鼠兔具有更高的抽象层次。 Pika 仅支持 AMQP 0.9.1 协议,而 Kombu 可以支持其他传输(例如 Redis)。更一般地说,Kombu 比 pika 功能更丰富。它支持重新连接策略、连接池、故障转移策略等。其中一些功能是必备的(如果您选择在一个严肃的项目中使用 Pika,您将不得不重新实现或解决这些功能),其他一些功能非常适合拥有。这样做的缺点是:库越复杂,您就越会对其行为感到惊讶,并且推理和跟踪错误也就越困难。 Pika 的代码库相对较小且易于使用。另一方面,Kombu 是为 Celery 量身定做的,这是一个巨大的项目。 Celery 的文档相当不错,而 Kombu 的文档相比之下就很差了。感觉要暴露的项目是Celery,不是Kombu

在底层,当使用 AMQP 作为传输方式时,Kombu 使用 py-amqp library or librabbitmq 到 send/receive/parse AMQP 0.9.1 帧。在这方面,pika 在抽象级别上比 Kombu 更接近 py-amqp

RabbitMQ 很复杂。如果您认为不应在已经封装好的功能上增加复杂性,或者如果您需要对 RabbitMQ 进行更多控制和理解,请选择 pika。如果您需要交钥匙解决方案并且不想重新发明轮子(即重新实现一些大多数情况下值得几行代码的基本功能),请选择 Kombu。但是无论您选择哪种库,都不应该让您无法深入了解底层代理的优势和局限性。