Java コードから Java コードにメッセージを送信するための Java Messaging Service (JMS) についてよく知っています。また、CORBA は、さまざまなプログラミング言語を結合してオブジェクトを介して互いに通信できるようにするのに役立つ統合プログラミングです。
しかし、Java から C++ に、またはその逆にメッセージを送信するために、さまざまな言語用の JMS などの共通のメッセージング サービスがあるかどうか疑問に思っていました。
AMQPに基づく実装(RabbitMQなど)などのブローカーベースのアーキテクチャが提供する機能の一部が必要な場合を除いて、 ZeroMQから始めることを強くお勧めします。
ZeroMQには、Java、C#、C ++、Cを含む多くのバインディングがありますが、メッセージベースであるため、異なる言語間でオブジェクトを転送すると、OpenDDSのようなものに適している場合があります。OpenDDSとZeroMQの使用法とパフォーマンスの比較を参照してください
基本的なものから複雑なものまで、ZeroMQ実装の良い例。例えば
UMPのような29のWest(Informatica)製品を探してみてください。ミドルウェアのないミドルウェア。TibcoRVに似ています。ブロードキャスト、マルチキャスト、およびユニキャストを使用します。 http://en.wikipedia.org/wiki/29West。ブローカーは必要ありません。各通信参加者には、トランスポートデーモンを実行するUMPがインストールされている必要があります。Javaの場合、JMS仕様を実装し、トランスポートを介してメッセージをアップストリームおよびダウンストリームできるようにするlibがあります。
そのために特別なサーバーをセットアップしたくない場合(そしてCORBAである複雑なモンスターを台無しにしたくない場合)は、Googleプロトコルバッファーhttps://developers.google.com/protocol-buffers/をチェックしてください。
ソケットを介してすべてを送信するだけで(必要に応じて自分自身に接続することもできます)、追加のサーバーや構成は必要ありません。
TIBCO RVには、Java、C、C ++、.NETなどの多くのインターフェースがあります。
HornetQには、他の言語で使用できるSTOMPおよびREST実装があります: TechnicalFaqHornetQ
Spread API (www.spread.org) を見て、要件に適合するかどうかを確認できます。
別の提案はOpenMQです。そのパッケージ内には、C ヘッダー ファイルと、C/C++ プログラムをリンクできるライブラリ ファイルが含まれています。
Data Distribution Service (DDS) は、CORBA 仕様を作成したのと同じグループである OMG による標準です。標準化された言語バインディングは C、C++、Java、Ada ですが、C# なども利用できます。異なる言語とオペレーティング システムをシステムに混在させることができます。配布される構造化データ型は、言語に依存しない形式 (標準では OMG IDL のサブセット) で指定され、アプリケーションで使用される言語固有のインターフェイスとデータ型に変換されます。
DDS 仕様は、強力な型指定とコンテンツ認識データバス、分散状態管理、履歴データ アクセスなど、多くの高度なデータ管理機能をサポートしています。サービス品質設定の豊富なセットにより、アプリケーションからミドルウェアへの多くの複雑さをオフロードできます。
通常、DDS の実装は拡張性が高く、本質的に分散化されています。DDS インフラストラクチャに参加しているコンポーネントは、空間的にも時間的にも分離されています。一部の DDS 製品は、多数のミッション クリティカルなシステムやビジネス クリティカルなシステムに導入されています。
非常に簡単な紹介と参考文献のリストについては、このウィキペディアのエントリを参照してください。私は 10 年以上にわたって DDS を専門としてきましたが、今でも気に入っており、最も有用な技術の 1 つだと考えています。
私は、 ActiveMQが仕事を成し遂げることができることを知っています。通常、プロトコル バッファを使用して、ネットワーク上でオブジェクトをシリアル化します。XML は動作する可能性がありますが、主なことは、いずれかの言語がネットワーク上でオブジェクトを表現するために使用することを決定したメモリのランダムなチャンクが必要ないことです。既知のシリアル化形式が必要です。
http://qpid.apache.org/を見てください。
Java/C++ ブローカーの実装とそれらの両方があり、他のいくつかの言語はメッセージを交換できます。