请问有人能告诉我pika和kombu这两个Python消息库有什么区别吗?

29

我想在我的应用程序中使用消息传递库与RabbitMQ交互。请问有人可以解释一下pika和kombu库之间的区别吗?

1个回答

61
Kombu和pika是两个不同的Python库,它们从根本上具有相同的目的:向/从消息代理发布和消费消息。
Kombu比pika具有更高的抽象级别。Pika仅支持AMQP 0.9.1协议,而Kombu可以支持其他传输方式(例如Redis)。总的来说,Kombu比pika更加功能丰富。它支持重新连接策略、连接池、故障转移策略等等。其中一些功能是必须的(如果选择在一个严肃的项目中使用Pika,则必须重新实现或解决问题),其他一些则只是好用。这样做的缺点是:库越复杂,你就会越惊讶于它的行为,越难以理解和跟踪错误。Pika的代码库相对较小,易于理解。另一方面,Kombu是专门为Celery设计的,而Celery是一个庞大的项目。 Celery的文档相当不错,但与之相比,Kombu的文档相当差。感觉像是Celery是要暴露的项目,而不是Kombu。
在使用AMQP作为传输时,Kombu在底层使用py-amqp库或librabbitmq来发送/接收/解析AMQP 0.9.1帧。在这方面,pika在抽象级别上更接近于py-amqp而不是Kombu。

RabbitMQ是复杂的。如果您认为不应该添加复杂性以覆盖已经很好封装的功能,或者需要更多对RabbitMQ的控制和了解,请选择pika。如果您需要一个即插即用的解决方案,并且不想重复发明轮子(即重新实现一些基本功能,这些功能大部分时间只需要几行代码),则选择Kombu。但无论您选择哪个库,都不能让您不深入学习底层代理的优缺点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接