2009-08-11 5 views
8

私たちは、現在、ITが既にハードウェアを購入しているアプリケーションを作成しています。彼らのアプローチは、私たちが展開する大きなハードウェアを購入することでした。より多くの処理を追加するために、同じソフトウェアを使用して追加のサーバーを追加する予定です。この設計に対応するために、Terracottaを使用して複数のJVMを1つの大きなJVMのように実行する機能を提供しています。これが賢明な方法であるかどうかにかかわらず(私はまだ確信していません)、これは私が扱っている状況です。TerracottaはJMSを不要なレイヤーにしていますか?

とにかく、我々は標準プロデューサ/コンシューマタイプのキューを使用するアプリケーションの部分を持っています。 Terracottaでは、複数のJVMで動作する単一のキューを作成できます。これはかなり滑らかで、うまくいきます。

今、非同期プロセスを実行する機会が増えています。すべてのキューイングロジックをより一貫させるために、JMSを使用して共通ロジックを抽象化することを検討しています。 JMSをリモートキューとして使用する予定はないので(少なくとも近い将来は)、JMSが不要な複雑さを追加しているかどうか疑問に思っています。

ご意見やご提案はありますか?並行構造としてキューを構築し続けるか、またはそれらを別々の潜在的なリモートオブジェクトとして扱うべきですか?

答えて

6

メッセージキューは本質的に単なるキューオプションであるキューデータ構造です。プロジェクトは、ほとんどの他のプロジェクトのような場合は、兵馬は、永続性と分布を処理している、特に以来、古いQueue実装とJMSは異なるようJMS機能のいずれかを使用していないです。

ので、JMSは、おそらく何かJMSがでかなり良いです、あなたのアプリケーションに複雑さを加えています。複雑さのすべての不必要なドライバと同様に、それを取り除く。 1つ以上の理由でJMSを使用することに決心した場合は、それを実行してください。

1

私の同僚は、あなたが分子内または分子間JVMキューかもしれキューを定義することを可能にする、Muleを使用しています。

は私がkrosenwaldに同意:テラコッタから離れて移動(または少なくともオプションとを持っている)のいずれかに一般的な計画がない限り、JMSは、あなたのケースで追加される内容ははっきりしません。

1

私はテラコッタを使用していないが、我々はそれに非常によく似た分散キャッシュ製品を使用しています。私たちのアーキテクチャもあなたのものと似ています。プロデューサとコンシューマの両方が同じキャッシュにいて、キャッシング・サブシステムを使用してデータを共有している。

私は今、JMSを追加すると、あなたのためにunneccesary複雑であるかもしれないという原理に同意するが、我々はツルツルしながら、分散キャッシュは、メッセージング・メカニズムの最適な実装ではない、ということを発見しました。同じセマンティクスを作成することができますが、小さな詳細によっては問題が発生します(コンシューマの負荷分散など)。

今後のユースケースを考えるなら永続性などにより多くのpub-subセマンティクスが必要な場合は、JMSについて考え始めることができます。また、懸念の分離を考慮する。 Terracottaを使用してデータを配布しています(これは設計されたものです)。また、制御命令を配布するのにも使えますか(これは意味論的な意味合いでうまくいきます)?

関連する問題