2012-04-28 13 views
2

イベント処理システムの設計に関するアドバイスが必要です。 高レベルでは、私のJavaサーバーはさまざまな要求を受け取り、実行し、(同期的かつ非同期的に)応答します。次のように複合イベント処理

流れがある:

a)は、低レベルのクラスは、クライアントからイベントを受信します。このクラスは、MessageRouterクラスへの参照を持ちます。イベントを取得すると、単にMessageRouterのroute(Eventイベント)を呼び出します。

b)MessageRouterクラスはイベントをキューに入れ、別のスレッドでメッセージのタイプを判断し、適切なHandlerを見つけてそれにメッセージを渡します。

c)ハンドラがメッセージを実行します。

d)ResponseRouterはレスポンスを収集して返します。

私の質問は以下のとおりです。

1)私は、要求を実行するためのクラスの4-5他の「マネージャ」ソートへの参照が必要とどのように私は)Cを設計する必要があります。また、c)応答を返信するためにd)を参照する必要がありますか?

2)同じように、d)応答を同期的かつ非同期的に書き戻すために、他のクラスへの参照が必要です。 ResponseRouterに必要なすべてのクラスへの参照が必要ですか?

主に、効率的かつエレガントな方法でイベントの実行とその応答をレイアウトするためのデザインパターン(またはそれらの組み合わせ)を探しています。

+0

「マネージャー」クラスを完全に理解できません...ハンドラー?たとえば、IORecieversはhttpゲートの非同期/同期の一種です。ハンドラ1はデータをオブジェクトにロードし、ハンドラ2はビジネスロジックハン​​ドラ3でデータをストアに書き戻し、handler4はレスポンスhtmlなどを作成します。 –

答えて

0

ハンドラが非同期で実行できるので、QRへの回答として、RequestRouterとResponseRouterインターフェイスを実装している他の2つのオブジェクトへの参照を使って、要求と応答の処理をMessageRouterでより簡単に行うことができます。

ハンドラが完了すると、その結果が同期または非同期でMessageRouterに返されます。

このように、このハンドラではResponseRouterへの参照は必要ありません。