クロスプラットフォーム、クロスランゲージメッセージングシステム?
-
06-07-2019 - |
質問
測定データを処理するシステムを作成するために連携する一連のアプリケーションを開発しています。疎結合にしたい理由はいくつかあり、システムはサードパーティによって拡張可能である必要があります。そのため、アプリはメッセージングを介して結び付けられます。
(少なくとも)C#、Java、Pythonでバインディングを提供し、Publish-Subscribe、Guaranteed Delivery、Selective Consumer(.Net MessagingのPeekなど)などのメッセージングパターンをサポートするメッセージングシステムを探しています。
私が知る限り、JMSまたは.Netメッセージングに問題はありません。.Net/ Java専用です。
システムは、チャネルをセットアップするときに使用するトランスポートメカニズム(ソケット、メッセージキューなど)を制御する必要があります。リモートマシンへのスケールアウトと、ローカルの輸送施設での高速化の両方ができるようにしたい。
適切なものが見つからない場合は、自分でロールバックする必要があります。シリアル化にはおそらくGoogleのプロトコルバッファーを使用します。技術オプションに関する他の推奨事項がある場合は、消してください。
ああ、はい-そして、チャンネルごとまたはメッセージごとにオプションの暗号化を行いたいです。
ETA:すべてのクイック返信をありがとう。私はドキュメント&を進めています今プロパガンダ。誰もが以下の技術を使用しましたか?また、何のために/どのような結果が得られましたか?
解決
activemq
http://activemq.apache.org/cross-language-clients.html
次のすべてのプロトコルをサポート
- OpenWire
- レスト
- ストンプ
- WS通知
- XMPP
- AMQP
ありがとう ポール
他のヒント
SonicMQはあなたが探しているツールかもしれません。私は彼らがプログレスに重きを置いていることを知っていますが、他の言語の代替もサポートしており、メッセージング部門の主要なプレーヤーです。
Paulが言及したように、多くの言語クライアントとワイヤをサポートする ActiveMQ を試してください。プロトコル。
BTW ActiveMQ 6.xは、おそらくその基礎となるワイヤトランスポートの1つとしてGoogleのプロトコルバッファを使用します:)
Apache ActiveMQを多くのプロジェクトで使用して大成功を収めました。その most 人気であり、今日の強力なオープンソースのメッセージブローカーです。
.Net / C#では、ActiveMQプロジェクトが NMS API を作成しました。これは標準です Spring.Net
に統合された.Netプラットフォーム上のメッセージブローカーと通信するためのAPIMPI を検討しましたか?
Mule のようなESB(Enterprise Service Bus)を使用できます。目的は、メッセージをバスに任意の方法(JMS、http、電子メール)で送信し、バスがルーティングを行うことです。 .NETバインディングがあるかどうかはわかりませんが、使用可能なものがなくても、拡張メカニズムを使用して独自のバインディングを作成できます。もちろん、これはどこかにバスを設置する必要があることを意味します。
堅実な商用サポートとほぼすべてのものへの統合が必要な場合、IBMのMQシリーズ、現在は Websphere MQ は、要件に記載されているすべての機能を提供します。
時々、あなたが支払うものを得るやる ...;-)
多言語の「標準」が必要な場合-ActiveMQ、SonicMQ、WebsphereMQのような特定のブローカー/仲介者の使用に縛られていないことを意味します-AMQP標準( http://www.amqp.org )および関連ブローカー(RabbitMQ、QPid、OpenAMQ。 http://www.amqp.org/confluence/display/AMQP/AMQP+Products )。
Open Message Queue(Open MQ)はGlassFishアプリケーションサーバーに含まれており、スタンドも実行します単独。数秒で起動し、JavaおよびCクライアントをサポートします。 Stompサポートは現在バージョン4.4で開発中です。