10

Javaで軽量のメッセージングフレームワークを探しています。私の仕事は、SEDAの方法でイベントを処理することです。処理の一部の段階は迅速に完了でき、他の段階は完了できないことを知っており、これらの処理段階を分離したいと考えています。

コンポーネントAとBがあり、処理エンジン(このコンテナなど)がコンポーネントAを呼び出し、コンポーネントAがコンポーネントBを呼び出すとします。コンポーネントBの実行時間が2秒になるかどうかは関係ありませんが、実行するかどうかは関係ありません。たとえば、コンポーネントAの時間は50ms未満です。したがって、コンポーネントAがBにメッセージを送信するのが最も合理的であるように思われます。このメッセージは、Bが目的の時間に処理します。

さまざまなJMS実装とApacheActiveMQを認識しています。これらは、これには重すぎます。私はいくつかの軽量メッセージング(メッセージのシリアル化や最も単純なルーティングなどの本当に基本的な機能を備えた)を探しましたが、役に立ちませんでした。

この号でお勧めするものはありますか?

4

5 に答える 5

5

本当に軽量ですか?エグゼキュータ。:-)つまり、エグゼキュータ(B、説明では)を設定すると、Aは単にタスクをエグゼキュータに送信します。

于 2008-10-17T08:57:50.767 に答える
5

なんらかの永続性が必要ですか (たとえば、JVM が数千のメッセージを処理する間に停止した場合など)、メッセージを他の JVM にトラバースする必要がありますか?

すべてが単一の JVM にあり、JVM が停止した場合のトランザクション、回復、またはメッセージの損失について心配する必要がない場合は、Chris が上で述べたように、Executor は問題ありません。

ActiveMQ は非常に軽量です。必要に応じて、永続性なしで単一の JVM でのみ使用できます。その後、必要に応じて、トランザクション / 永続性 / リカバリ / リモーティング (複数の JVM での作業) を有効にすることができます。しかし、これらのいずれも必要ない場合はやり過ぎです。Executor を使用してください。

ちなみに、どのステップが永続性/信頼性または複数の JVM への負荷分散を必要とするかわからない場合の別のオプションは、ミドルウェアの使用を完全に非表示にすることです。これにより、メモリ内の SEDA キューと JMS/ActiveMQ へのエグゼキュータを必要に応じて切り替えることができます。に。

たとえば、一部のステップは信頼性が高く回復可能である必要がある (そのため、ある種の永続性が必要) 場合もあれば、そうでない場合もあります。

于 2008-10-17T09:49:09.727 に答える
2

Apache Camel はすべてのニーズをカバーしていると思います。JVM 内で動作し、SEDA スタイル ( http://camel.apache.org/seda.html ) と単純なルーティングをサポートします。単独で使用することも、Spring と一緒に使用することも、JMS プロバイダーやその他のアダプターと共に使用することもできます。

于 2009-11-16T13:38:34.640 に答える
1

古いスレッドを復活させて申し訳ありませんが、他の誰かがそれを読むのに役立つかもしれません.FFMQは軽量メッセージングフレームワークの良い候補だと思います.

更新: ただし、再配信の遅延 (配信不能キューの問題) をサポートしているかどうかはわかりません。これは、軽量プロバイダーでも使用できると思います。しかし、MessageSelector クエリとメッセージ プロパティを組み合わせることで可能になると思います。

于 2010-06-11T15:20:38.893 に答える