47

パブリッシュ/サブスクライブ パターンを提供する Java 用の優れた軽量フレームワークはありますか?

いくつかの理想的な機能

  • ジェネリックのサポート
  • パブリッシャーへの複数のサブスクライバーの登録
  • API は主にインターフェイスといくつかの便利な実装
  • 純粋にインメモリ、永続性、およびトランザクションの保証は必要ありません。

私は JMS について知っていますが、それは私の必要性には過剰です。パブリッシュ/サブスクライブされたデータは、ファイル システムのスキャンの結果であり、スキャン結果は処理のために別のコンポーネントに供給され、別のコンポーネントに供給される前に処理されます。

編集:すべて同じプロセス内にあります。Bean からの PropertyChangeListener は、特定のアイテムを公開するのではなく、プロパティの変更を報告しているため、あまり役に立ちません。「最後に公開されたオブジェクト」プロパティを使用して、ProprtyChangeListener を機能させることができ、オブジェクトを公開しました。PropertyChangeListeners はジェネリックをサポートせず、純粋なパブリッシュ/サブスクライブではなく、プロパティ変更セマンティクスに定着しています。java.util Observer/Observable パターンが適していますが、Oberver は具象クラスです。

4

6 に答える 6

11

JMS は、構成に応じて軽量または重くなります。たとえば、メモリ内キューを持つ 1 つのプロジェクトでHornetQを使用します。セットアップが簡単で、JNDI ベースの構成を必要とせず、非常に使いやすいです。

Message Pub/Sub の API としての JMS は、これまでにないほど簡単だと思います。(そして簡単ではありません;)

于 2010-06-13T16:11:14.033 に答える
8

Spring を使用しているため、Spring に独自の軽量イベント フレームワークがあることを認識しているかどうかはわかりません。主にフレームワーク自体で使用されますが、アプリケーション コードで完全に使用できます。

デフォルトでは、同期 pub/sub ですが、ApplicationEventMulticaster.

于 2010-06-13T17:11:55.367 に答える
0

プロセスの境界を越える場合、ある程度の「重み」が発生します。JMS がヘビー級であると言えるのはなぜですか? APIは非常に単純ですか?おそらく軽量の実装があります。たとえば、永続性やトランザクション性などのコストが高いリンクテキストはオプションです。

これより軽いものが必要ですか?

于 2010-06-13T16:03:22.953 に答える
0

Bob Lee がhttp://snipt.org/GWm/QueueFileでクラスを開いており、興味深いと思います。これは単純な永続キューであり、複数のコンシューマーが使用できます。永続性は必要ないように思えますが、全体が非常に軽量であるため、それでも役立つ可能性があります。

于 2010-12-29T02:39:08.513 に答える