2012-04-11 18 views
0

新しいシステムをJavaで実装する予定です。さまざまなイントラネット/エクストラネット/インターネットシステムと相互作用し、さまざまな外部システムと同じロジック(わずかな調整)を共有する必要があるシステムの性質上、ビジネスロジックをフロントエンドから移動してサービスプレゼンテーション層とビジネスロジック層を相互接続するためにJMSを使用する予定です。プレゼンテーション層は要求を送信し、ビジネスロジック層は処理結果の応答を送信する。要求/応答パターン用のJMS

小さなPOCシステムを実行した後、我々はこの方法が非常に有望であることを発見した。しかし、Oracleのユーザー(aplogサーバーとJMSサーバーの両方にweblogicを使用する予定)は、メッセージ・キューの性質は要求/応答パターンではないため、常にパフォーマンスの問題があるとしています。

オラクルの人の意見はありますか?私たちはJavaの世界をかなり新しくしています(javaについての経験は一切なく、このシステムを社内に実装しなければならない、アウトソーシングオプションはありません).POCは約300 req-resp /秒でテストされましたシステムの場合)、システムのオンライン後にパフォーマンスの低下が確実に起こるかどうかはまだ分かりません。

+0

非同期サービス・メソッド呼び出しの後であれば、新しい['@ Asynchronous'](http://docs.oracle.com/javaee/6/api/javax/ejb/Asynchronous.html)のEJBメソッドをJava EE 6はその作業を実行できます。より一般的なポイントツーポイントタイプのリクエスト/レスポンスサービスを複数のインターフェイスで使用している場合は、ESBのフレームワークまたはプラットフォームを参考にしてお手伝いしてください。 –

+0

@AlistairIsrael我々はjpaを使用する予定ですが、ejbの部分は使用しないことを計画しています。実装が難しいことで有名で、少なくとも10000個以上のejbオブジェクトが必要です。 ESBはエクストラネットの部分で仕事をしますが、イントラネットの部分ではもっと簡単なものが必要です。したがって、jms – dhchen

答えて

2

このようなパフォーマンスの問題はありません。

JMSのトランザクション性のため、少し失ってしまいます。プレゼンテーションレイヤーからのメッセージは、ビジネスレイヤーが処理を開始する前にログに記録する必要があります。同様に、プレゼンテーションレイヤーが応答処理を開始する前に応答を記録する必要があります。

しかし、この小さな欠点は、負荷が重いときに並列処理する機能と極端な負荷のもとで安全に要求をキューに入れる機能によって補われるだけではありません。 (RPCアプリケーションは、このような状況ではJMSが遅くなるだけです)。

主な問題は、非同期環境でのエラーを処理することです。あなたのプレゼンテーション層がリクエストを送信して、ビジネスサーバ側で何かが間違っていると仮定する前に、応答を合理的に待つべきかどうか?プレゼンテーションレイヤーが返信メッセージで何をすべきかを爆発させた場合、特にそれが何らかの種類の更新であった場合はどうでしょうか?これらの問題はすべて対処できますが、その方法について考える必要があります。

+0

ありがとうございます。あなたの最後の段落(async環境のエラー)については、あなたが言及したエラーのハンドルについてのヒントを教えていただけますか? 2フェーズコミット? – dhchen

+0

シナリオでは、3つの独立した独立した作業単位があります。リクエスタは置く、サーバは取得して返す、リクエスタは得る。エラーや停電の処理方法は、ビジネス要件に非常に結びついています。 –

関連する問題