13

(C)PythonとJava / JMSアプリケーションの両方をサポートするメッセージブローカーを介した通信に適したソリューションは何ですか?私の特定の要件は次のとおりです。

  • オープンソースソリューション
  • Linuxベースのシステムで利用可能
  • 送信者と受信者の間のランデブーは必要ありません(つまり、メッセージブローカーを使用します)
  • 1つのイベントキューでサポートされる複数のプロデューサーとコンシューマー(各メッセージを受信するのは1つのコンシューマーのみ)
  • 2フェーズコミットによる作業単位のサポート(XAサポートがあると便利です)
  • 永続メッセージのサポート(つまり、ブローカーの再起動後も存続します)
  • JavaクライアントのJMSをサポート
  • 「フリンジ」のコンポーネントはありません。つまり、コミュニティのサポートや関心がないためにメンテナンスから外れるリスクがあります。
  • 「JMSを話す」ことができるPythonクライアントがある場合、それは素晴らしいことですが、独自のPythonJMSレイヤーを作成するタスクを含む回答は受け入れられます。

私はこれに対する解決策を見つけるのに驚くほど苦労しました。ApacheのActiveMQは、そのままではPythonをサポートしていません。ZeroMQにはランデブーが必要です。RabbitMQはJMSをサポートしていないようです。私が見つけた最良の候補は、ActiveMQとpyactivemqライブラリの組み合わせです。しかし、pyactivemqの最初と最後のリリースは2008年だったので、それは私の「フリンジなし」の要件を満たしていないように見えます。

理想的な答えは、Java / JMSとPythonアプリケーション間の通信に個人的に使用した、十分にサポートされ、十分に文書化された1つ以上のオープンソースパッケージの名前であり、取得するために多くの統合作業を必要としません。開始しました。上記のすべての要件を満たすための追加のグルーコードの「簡単な」(最大数日間の作業)実装を含む回答が受け入れられます。優れたオープンソース候補がない場合の商用ソリューションも受け入れられます。

また、Jythonも出ています。(私ができれば...)同じPythonアプリケーションは、CPythonでのみ利用可能なモジュールを使用する必要があります。

4

4 に答える 4

5

JMSは仕様であり、実装ではありません。RabbitMQは本当にオプションです。

また、JbossのHornetQ http://www.jboss.org/hornetqを使用しました。これは、Java EEのすべてのものとより整合しているためですが、Springを使用している場合は、RabbitMQが特に選択されます。

于 2011-07-14T03:38:59.983 に答える
4

私はこれに対する解決策を見つけるのに驚くほど苦労しました。ApacheのActiveMQは、そのままではPythonをサポートしていません。

ActiveMQブローカーは、Stompプロトコルの使用をすぐにサポートします。Stompは、多くのプラットフォームと言語のクライアントを持つメッセージング用のテキストベースのプロトコルです。

ActiveMQのドキュメントには、stomp用のコネクタを設定する方法に関する情報が含まれている必要があります。最も単純な形式では、コネクタを有効にすると次のようになります。

<transportConnectors>
   <transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>

ブローカー側で有効にすると、stompをサポートする任意のPythonライブラリを使用できます。次に、Python側でStompを使用し、Java側でJMSを使用して、ブローカーとの通信および特定の宛先からの送受信を行うことができます。

于 2011-07-16T17:56:31.337 に答える
1

GlassFishメッセージキュー(以前のSun Java MQ)を使用していました-OpenMQから継承されています

すべてではないにしても、ほとんどの要件を満たします。Red Hat Linux(RHEL)ではフェイルオーバーオーバークラスターブローカーを使用していました。これは、頻繁に使用する場合に信頼性があります。いくつかの「癖」があちこちに潜んでいますが。

于 2011-07-11T16:02:50.630 に答える
1

OpenAMQRabbitMQをもう一度見てみることをお勧めします。

RabbitMQとOpenAMQで使用される基盤となるメッセージングテクノロジーはAMQPです。これらのブローカーの両方(および表面上は他の仕様に準拠したブローカー)に対して機能するPythonおよびJavaクライアントを簡単に見つけることができるはずです。

JMSが必須の場合は、AMQPの上に実装されたJMSクライアントを見つけることができるかもしれません(OpenAMQは一度にそのようなクライアントを提供しましたが、現在のステータスはわかりません)。

于 2011-07-01T22:25:39.730 に答える