9

私は、優れたオープン ソース ネットワーク ベースの Pub/Sub (オブザーバー パターン) ライブラリを探しています。気に入ったものが見つかりませんでした:

  • JMS - Java に関連付けられており、メッセージの内容をダム バイナリ BLOB として扱います

  • NDDS - $$、IDL の使用

  • CORBA/ICE - Pub/Sub は RPC の上に構築され、CORBA API は直感的ではありません

  • JBOSS/ESB - あまり詳しくない

そのようなパッケージが次のことができればいいのですが:

  • ネットワークベース

  • ペイロード データを認識しているため、ユーザーはエンディアン/シリアライゼーションの問題を心配する必要はありません。

  • 多言語サポート (C++、ruby、Java、python がいいでしょう)

  • 自動生成コードなし (IDL なし!)

  • 直感的なサブスクリプション/トピック管理

楽しみのために、私は自分自身を作成し​​ました。考え?

4

9 に答える 9

5

RabbitMQを調べてみてください。

于 2009-07-10T22:28:34.273 に答える
4

このスレッドの以前の投稿で指摘されたように、選択肢の 1 つは OpenSplice DDS です。これは、OMG DDS 標準 (NDDS によって実装された同じ標準) のオープン ソース実装です。

検討している他のミドルウェアに対する OpenSplice DDS の主な利点は、次のように要約できます。

  • パフォーマンス
  • QoS の豊富なサポート (持続性、耐障害性、適時性など)
  • データ中心 (例: データ ストリームのクエリとフィルタリングの可能性)

私が理解したいのは、IDL に関するあなたの問題は何かということです。DDS は、言語に依存しないユーザー データ型の指定方法として IDL を使用します。ただし、DDS は IDL に限定されません。必要に応じて XML を使用することもできます。データ型を指定し、その表現を特定のプログラミング言語から分離する利点は、ミドルウェアが次のことができることです。

(1) データをシリアル化する負担を軽減します。

(2) 非常に時間/空間効率の高いシリアライゼーションを生成します。

(3) エンドツーエンド型の安全性を確保し、

(4) (JMS のようなヘッダーだけでなく) データ型全体でコンテンツ フィルタリングを許可する。

(5) プログラミング言語 (Java、C/C++、C# など) 間でオンザワイヤの相互運用性を有効にします。

設計しているシステムまたはアプリケーションによっては、上記のプロパティの一部が役に立たない、または適切でない場合があります。その場合、シリアル化されたデータの所有者である「DDS タイプ」を 1 つまたはいくつか生成するだけです。

JMS について考えると、データの送信に使用できる 5 つの異なるトピック タイプが提供されます。DDS でも同じことができますが、トピックの種類を正確に定義できる柔軟性があります。

最後に、 Scala と DDS に関するこのブログ エントリをチェックして、特に分散システムで型と静的型付けが優れている理由について詳しく説明します。

-交流

于 2010-08-23T08:15:45.310 に答える
3

RTI DDS実装を使用します。費用はかかりますが、多くのサービス品質パラメーターをサポートしています。

OpenDDSと呼ばれる無料の DDS 実装がありますが、私は使用していません。

ターゲット言語が静的に型付けされている場合、データ型を事前定義する必要性を回避する方法がわかりません。

于 2009-07-10T22:34:53.107 に答える
2

さまざまな JMS 実装をもう少し詳しく調べてください。

それらのほとんどは Java だけではなく、他の言語のクライアント ライブラリも提供しています。

Suns OpenMQ には少なくとも C++ インターフェースがあり、Apache ActiveMQ は多くの共通言語用のクライアント側ライブラリを提供します。

メッセージ形式に関しては、通常、メッセージ ミドルウェア自体から分離されています。独自のメッセージ形式を定義できます。独自の XML スキーマを定義して、XML メッセージを送信できます。必要に応じて、サードパーティのライブラリを使用して、BER でエンコードされた ASN.1 を送信できます。または、JSON ライブラリを使用してデータをフォーマットおよび解析します。

于 2009-07-11T01:51:03.113 に答える
1

MUSCLEライブラリに興味があるかもしれません(免責事項:私が書いたので、偏見があるかもしれません)。ご指定の条件をすべて満たしていると思います。

https://public.msli.com/lcs/muscle/

于 2009-08-08T19:07:17.907 に答える
1

私が使用した3つ:

  • IBM MQ シリーズ - 高すぎて扱いにくい。

  • Tico Rendezvous - (現在は EMS に名前が変更されましたか?) 非常に高速で、UDP を使用し、中央サーバーなしでも使用できました。私のお気に入りですが、高価で、維持費が必要です。

  • ActiveMQ - 現在これを使用していますが、頻繁にクラッシュすることがわかりました。また、spring.net のような Java から移植されたいくつかのプロジェクトが必要です。動作しますが、安定性の問題があるためお勧めできません。

また、MSMQ を使用して独自の Pub/Sub を構築しようとしましたが、そのままでは処理できないため、かなりの量のコードを書くのに苦労しました。

于 2010-08-24T18:44:48.993 に答える
0

OpenSplice DDS もあります。これは、 L GPLであることを除けば、RTI の DDS に似ています。

それをチェックてください:

于 2009-09-23T03:33:39.947 に答える
0

PubSubHubbubをご覧ください。Webhook を介して pubsub を許可するための Atom/RSS の拡張機能です。インターフェイスは HTTP と XML であるため、言語に依存しません。Google Reader、FriendFeed、FeedBurner が使用しているため、採用が増えています。主なユースケースはブログなどですが、もちろんどんな種類のペイロードでも構いません。

これまでのところ、私が知っている唯一のオープン ソース実装は、Google AppEngine 用のものです。彼らは、セルフホスティングのサポートが来ると言います。

于 2009-08-08T18:58:51.853 に答える
0

IBM Webphere MQ であり、企業レベルで作業している場合、ライセンスはそれほど高価ではありません。

于 2013-10-14T13:01:30.647 に答える