4

AMQP (qpid を使用) を使用して、Python と Java のサービスが相互に通信できるようにすることを検討しています。基本的なテキスト メッセージングは​​単純に見えますが、私が調査した他のすべてのメッセージング テクノロジと同様に、それで終わりのようです。インスタント メッセージング アプリケーションを構築することを除いて、文字列を送信することは特に役立つことではないと思っていたでしょう。

私の本能は、両方の言語で優れたライブラリサポートを備えた XML (デ) シリアライゼーションまたは類似のもの (JSON、YAML、プロトコルバッファーなど) を使用することです。これはベスト プラクティスですか? もしそうなら、どの (逆) シリアル化プロトコルをお勧めしますか? それとも、私はどこかでポイントを逃しており、小さなテキストを送信するだけで十分なはずですか?

4

3 に答える 3

6

Owen さん、RabbitMQ について一言お願いします。

AMQP はバイナリ プロトコルであり、文字列を送信するだけではありません。どの Python クライアントを使用する予定ですか? ほとんどの場合、Barry Pederson のクライアントを使用することをお勧めします: http://barryp.org/software/py-amqplib/ RabbitMQ リストに来て、投稿やコメントに関連することについて何でも質問してください。 -)

James が指摘するように、JSON は優れた機能です。RabbitMQ は、AMQP バックエンドに接続する HTTP 経由の JSON-RPC をサポートしています。コメット型のアプリには、RabbitMQ を Orbited と共に使用する人もいます。

さらに、私たちは XMPP のファンであり、James が発明した STOMP もサポートしています。STOMP は、特定のクラスのメッセージング アプリに便利であり、RabbitMQ は、ダイレクト ルーティングとトピック ベース ルーティングの両方で STOMP をサポートしています。ActiveMQ と相互運用するには、これが優れた方法であることがわかっており、そのシナリオでは JMS よりも優先されます。

ユースケースに適したサーバーが見つかることを願っています。最良の結果を得るために、さまざまな組み合わせを試すことをお勧めします。

乾杯、

アレクシス

于 2008-12-03T19:05:37.667 に答える
2

それだけの価値はありますが、私は AMQP + Protocol Buffers を使用して良い経験をしています。

送信者がメッセージをシリアライズしている場合、受信側でデシリアライズする方法がわかるように、おそらくヘッダーに id を含める必要があります。ただし、これを達成するのはそれほど面倒ではありません。

于 2009-06-02T00:27:31.773 に答える
1

XML または JSON がおそらく最も簡単です。プロトコル バッファはクールですが、必要に応じて後で考える最適化として扱います (本質的にバイナリ ワイヤ形式であるため、使用するのが少し難しいため)。

ところで、AMQP ではなく Stomp を見たいと思うかもしれません。より多くのクライアント ライブラリとサポートされているメッセージ ブローカーを手に入れました。たとえば、qpid や rabbitmq よりもはるかに人気のあるApache ActiveMQ - または実際には、どのJMS プロバイダーでも問題なく動作します。

于 2008-12-02T09:22:24.613 に答える