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

标签 python-2.7 rabbitmq amqp pika kombu

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

最佳答案

Kombu 和 pika 是两个不同的 python 库,它们基本上服务于相同的目的:向/从消息代理发布和消费消息。

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

在后台,当使用 AMQP 作为传输时,Kombu 使用 py-amqp图书馆或 librabbitmq发送/接收/解析 AMQP 0.9.1 帧。在这方面,鼠兔会更接近 py-amqp在抽象级别方面比 Kombu。

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

关于python-2.7 - 谁能告诉我 python 中 pika 和 kombu 消息传递库之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48524536/

相关文章:

python - 带 if 条件和不带 if 条件的切片

python - 如何在 Panda 中计算两个数据框的矩阵乘积?

java - Rabbitmq java客户端消费者handleDelivery方法没有被调用

RabbitMQ - 相同的消息是否会通过不同的连接传递给消费者

c++ - 具有最小依赖性的跨平台 C/C++ RabbitMQ 库

python - 在矩阵上使用 scipy.fsolve

python - 无法在 Django Rest Framework View 集中的模型方法中显示带注释的查询集

java - Spring RabbitMQ 监听器返回一个以逗号分隔的 ASCII 小数字符串

java - Spring AMQP 优先消息

go - 使用 QPid 和 golang 包装器 Electron 连接到 AMQP 1.0 Azure EventHub