2011-10-26 7 views
1

JAX-RS APIを備えたJava EE Webアプリケーションを構築しているので、他のWebサイトのプラグインでデータを送信したり、さまざまなクライアントサイトからデータを受信し、統計情報を表示できる独自の管理インターフェースを備えた分析サーバー。Java EEアプリケーションのメッセージキューによる一時的なデータのバックグラウンド処理

クライアントが送信するデータは、現在、データベースの一時テーブルに保存されています。後でさらに処理され、統計データを保持する実表に保存されます。

その後、そのデータのバックグラウンド処理を実装する必要がありますか?私はスレッドを自分で作成すべきか、メッセージキューシステムを使うべきか(私はRabbitMQを見てきましたが有望そうですが、Java EEアプリケーションに組み込むのが適切かどうか分かりません)

また、私は現在のデータベースに一時的なデータ(ユーザーからの情報を1つのチャンク、JSON/XML文字列として)を保存しているか、別のテンポラリデータベースに保存するほうが適切かと思います。例えば、nosqlのデータRedis、mongodbなどのように、しかし、彼らがこれに適しているかどうかを判断することはできません。

最後に、メッセージキューを使用する必要がある場合は、要求をメッセージキューまたはJAX-RSで処理する必要がありますか? JAX-RSの懸念事項は、待ち行列ほどのパフォーマンスではない可能性があり、私が言ったように、APIは本当に必要ないということです。単なるBase-64でエンコードされた文字列(さまざまな統計情報が含まれています)クライアントのWebサイトから入手できます。ここでの質問の

答えて

1

たくさん:)私は順番にお答えしようとするでしょう:

  • それはErlangの上で動作するので、あなたは、あなたのJavaEEアプリケーションでのRabbitMQを埋め込むことができなくなります。 JavaEEアプリケーションにメッセージブローカーを組み込む必要がある場合は、ActiveMQまたはHornetQを参照してください。
  • メッセージングシステムの耐久性のあるストレージ機能を使用する場合は、着信メッセージを一時データベースに格納する必要はありません。着信メッセージが小さい場合(KBではなくKB)、このアプローチはうまく動作します。
  • メッセージングシステムを受信メッセージのメインキーパーとして使用することで、スレッドの質問に対する回答も提供されます。処理するメッセージキューで1-nの同時コンシューマ(つまり、選択した特定のメッセージングシステムのコンシューマコンシューマ)を使用するそのメッセージを統計データベースに書き込みます。
  • 最後に、すべてのクライアントが適切なプロトコルを話す能力を持っているわけではないので、HTTPファサード(あなたのケースではJAX-RS)の背後ではなく、メッセージングシステムを直接公開することについて2回考えてください(RabbitMQ、AMQPしかし、優れたクロスプラットフォームをサポートしています)。また、直接公開することもセキュリティ上の懸念事項となります。
+0

詳細な回答をいただきありがとうございます。とても有難い。 – ustun

関連する問題