web-dev-qa-db-ja.com

誰でも私にPythonのpikaとkombuメッセージングライブラリの違いは何ですか?

アプリケーションでメッセージングライブラリを使用して、rabbitmqとやり取りしたいと考えています。誰かがピカとコンブライブラリの違いを説明できますか?

15

Kombuとpikaは2つの異なるpythonライブラリーであり、基本的に同じ目的を果たしています。メッセージブローカーとの間でメッセージをパブリッシュおよびコンシュームします。

Kombuは、pikaよりも高度な抽象化レベルを持っています。 PikaはAMQP 0.9.1プロトコルのみをサポートしていますが、Kombuは他のトランスポート(Redisなど)をサポートできます。より一般的には、昆布はピカよりも機能が豊富です。とりわけ、再接続戦略、接続プーリング、フェイルオーバー戦略をサポートしています。それらの機能のいくつかは必須のものです(真剣なプロジェクトでPikaを使用する場合は、再実装するか、回避する必要があります)。この欠点:ライブラリが複雑になるほど、その動作に驚かされ、バグの推論と追跡が難しくなります。 Pikaのコードベースは比較的小さく、簡単にアクセスできます。一方、Kombuは巨大なプロジェクトである Celery 用にカスタマイズされています。 Celeryのドキュメントはかなり良いですが、Kombuのドキュメントは比較するとかなり貧弱です。 CeleryはKombuではなく公開することを目的としたプロジェクトのようです。

内部でAMQPをトランスポートとして使用する場合、Kombuは py-amqp ライブラリまたは librabbitmq を使用して、AMQP 0.9.1フレームを送信/受信/解析します。この点で、ピカは抽象化レベルの点でKombuよりpy-amqpに近くなります。

RabbitMQは複雑です。すでに十分にカプセル化されている機能に複雑さを加えるべきではないと考える場合、またはRabbitMQをさらに制御および理解する必要がある場合は、pikaを選択してください。ターンキーソリューションが必要で、ホイールを再発明したくない場合は、Kombuを選択してください(つまり、ほとんどの場合、数行のコードに相当するいくつかの基本的な機能を再実装します)。しかし、どのライブラリを選択しても、基礎となるブローカーの利点と制限を深く学ぶ必要はありません。

18
user8808265