CamelContext.start()ブロックしません
-
12-09-2019 - |
質問
私は別のディレクトリからの単純な Apacheのキャメルの例をコピーするファイルを実行したいです>
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure () throws Exception {
from("file://c:/fromdir/").to("file://c:/todir/");
}
});
context.start();
私は、Apacheのキャメルを使用してこの例を実行する場合は、プログラムはcontext.start();
直後に終了し、何もしません2.0.0。私はThread.sleep(30000);
の始動後CamelContext
を追加する場合は、バックグラウンドスレッドは、自分の仕事やファイルが30秒間元から宛先ディレクトリにコピーされますか。
ただし、自動的にstart()
メソッドブロックを1.6.2と私はコピーされたファイルを取得するためにスリープ状態にメインスレッドを配置する必要はありません。私は、この動作は2.xのにキャメルの1.1から変更されたことをヒントを発見していませんこれは本当に意図した行動ですか?それはstart()メソッドは、キャメル2.0.0での実行をブロックできるようにすることは可能ですか?
おかげ
解決
うん、呼び出し開始()ラクダのコンテキストにスレッドをブロックすることはありません。キャメル2.0のこの正しい振る舞います。
あなたはCtrl + Cを打つまでの出発点がブロックされているようにようorg.apache.camel.utilからMainSupportクラスを使用するか、CamelContextにストップを()を呼び出すことができます。
MainSupportを延び、ばねXMLファイルからラクダをロードすることが可能であるラクダスプリング例主を参照されたい。
他のヒント
それとも、追加することができます。
Thread.currentThread().join();
context.start後();
所属していません StackOverflow