2009-07-31 4 views
2

複数のユーザ環境(tomcat-servlet経由)でプロセスを実行したい場合(このプロセスを完了するのにかかる時間は数時間です)、このプロセスを実装する方が良いでしょうか? 1)スレッド内または2)JMSで 利点と欠点は何ですか?スレッドまたはJMSどちらが良いですか?

答えて

3

JMSを使用する方法を正確にはわからないのは、クライアントがキュー上で要求をポップし、いくつかの(構成可能な)数のワーカースレッドで要求をプルしてサービスすることです。私の場合、これらのワーカー・スレッドを処理するためのメカニズムとしてMDBを使用していますが、これは単なる実装の詳細です。

代わりにスレッドとJMSが表示されません。スレッドを使用するための制御可能な方法をJMSに提供します。あまりにも多くのリクエストを同時に処理することを避ける必要があるため、キューを概念的に必要とし、JMSを使用してそれを実現できます。

結果を伝達する方法のように、ブラウザが何時間もぶら下がっていないことを確認するためのさまざまな詳細がわかります。 Ajaxのポーリングやコメットプッシュのようなものがありますか?

もう1つの考え方 - 数時間かかる単一のチャンク?これは、いくつかのステップに分かれて恩恵を受ける可能性があります(これは、やはりJMSキューの可能性があります)。そうすれば、クラッシュはすべてを正方形に戻すわけではありません。

0

2番目のオプション(つまり、 )を実行してください。TomcatのサーブレットでJMSクライアント(好ましくはJMSコンテナのMDB)にメッセージを送信してください。そこでは、長いプロセスを起動します。 サーブレット(オプション1)に新しいスレッドを作成するのではなく、それを実行することは実際にはお勧めできません。

0

私は主な要因は、あなたが見たいと思う同時要求の最大数とオーバーフローを扱うための戦略は何かと思いますか?

一度にいくつかのリクエストしか受け取らない場合は、スレッドは問題ありません。 CountdownLatchを維持する単純なバックグラウンドスレッドは、オーバーフローを処理するために使用できます。

多くのリクエストが必要な場合は、JMSがあなたの仕事に適しているかもしれません。

関連する問題