1

私は Web アプリケーションを作成しています。この中で、いくつかのタスクを実行するために多くのサービスとエグゼキュータを作成します。dispacter サーブレットを拡張し、init メソッドでエグゼキュータまたは他のスレッドを開始しました。これは正しいアプローチですか?

ここで、リクエストが来て、例外をスローした後にスレッドを実行しているエグゼキューターまたは同様のタスクが終了したとします。

1.他の依頼にも影響があると思います。

2.スレッドとエグゼキュータを実行するすべての重要なタスクが適切に実行されているかどうかを確認する監視スレッドを作成するにはどうすればよいですか?

3. そのような状況で障害が発生したエグゼキュータを引き継ぐために、別のバックアップ エグゼキュータを準備し、延期する必要がありますか? もしそうなら、どのように?

4

2 に答える 2

1

それは古いものですが、多分それは誰かを助けるでしょう:)

ExecutorService については、Codahale Metrics の問題に対処する方法の良い例があります: https://github.com/dropwizard/metrics/blob/master/metrics-core/src/main/java/com/codahale/metrics/InstrumentedExecutorService .java

Spring AsyncTaskExecutors に適したものは見つかりませんでした:/

于 2014-11-13T07:18:57.360 に答える
0

Executor を使用してからしばらく経ちましたが、Java、Spring の組み込みの Executor のいずれかを使用していますか、それとも独自のものを展開していますか? Spring にはたくさんの種類があり、Java は 2 つまたは 3 つの具体的な実装を提供すると思います。

とにかく、答えは何らかの監視サービスを展開することだと思います。たとえば、JMX が利用できる場合はそれを使用するようなものです。Executors を自動的に魔法のように配線したい場合は、ApplicationContextAwareインターフェースを使用して、 getBeansOfType()というメソッドを持つApplicationContextへの参照を取得できます。より単純なアプローチを取りたい場合は、監視サービスを記述して、そこにエグゼキュータを直接挿入できます。

別のオプションは、外部監視フレームワーク/アプリを取得することです。JVM プロセスにアタッチして物事を監視する Dynatrace のようなもの、またはアプリケーション サーバーの切り替えを気にしない場合は、SpringSource の tcServer のようなものがあります。これは、オプションで計測された Spring JAR を持ち、すぐに使用できる監視機能を多数提供します。

于 2013-09-13T20:24:54.893 に答える