2011-09-11 7 views
0

私は4つのブロックキューを持つSpring Beanを持っています。各キューには、そのキューでtake()を呼び出し、キューから取得したオブジェクトを処理するメソッド(processQueueX())が割り当てられます。アプリ起動時にspring beanのメソッドを複数実行する方法

私は、これらのメソッドのそれぞれを、アプリケーションの起動時に別のスレッドで呼び出す必要があります。 私はタスクスケジューラと固定遅延設定を試しましたが、何らかの方法でtomcatをブロックし、リクエストに応答しなくなりました。それぞれのメソッドは一度呼び出す必要があるので、スケジューリングは私が推測する悪い考えでした。

Initメソッドは、単一のスレッドで動作するため、各メソッドは永遠にキューを処理するために無限ループを持つため、機能しません。

Springの設定ファイルからこれらのメソッドを宣言的に呼び出す方法は、タスク名前空間と同様の方法ですか?またはプログラムで?

TNX

+0

キューがブロックする場合は、別々のスレッドで処理する必要がありますか?どの場合、4スレッドの起動を提案しますか?それはあなたの質問ですか? –

+0

うん、それは質問です。アプリ起動時に別々のスレッドでそれぞれ4つのメソッドを実行する方法 – makcro

答えて

0

私は、このようにクオーツがあなたのためにスレッドを行いますとTomcatが影響を受けない.AND糸のちょうど十分な数の水晶を設定する簡単なトリガーとスケジューラ悪くないアイデア利用クォートスケジューラを使用してだと思います。

0

23.4. The Spring TaskExecutor abstraction助けてください?

この例では、MessagePrinterTaskクラスがありますが、似ていますが、run()メソッドはキューの1つにアクセスします。あなたはあなたのキューがどれくらい似ているかに応じて、同じRunnableタスクを使うことができるかもしれません。

関連する問題