2017-11-01 9 views
0

私はCamel 2.19.1を使用しています。私のカスタムコンポーネントから追加されたキャメルルートは起動しません

私はカスタムのCamelコンポーネントを作成しています。それはプロデューサーだけです。コンポーネントは、別のルートセットを呼び出す非同期プロセッサを使用して別のシステムとやりとりします。私はこの上でテストを実行すると

@Override 
public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception { 
    if (!alreadyStarted) { 
     context.setUseMDCLogging(true); 
    context.addRoutes(context.getInjector().newInstance(OtherRoutes.class)); 
    } 
} 

が、私はOtherRoutesが作成なっていることを確認することができ、それがconfigure()が呼び出されます:私は私のコンポーネントのonCamelContextStarted()からルートの他のセットを追加します。しかし、明らかにルートは開始されていません。そのうちの1人に送られた交換はちょうどハングアップします。

OtherRoutesのルートを開始するにはどうすればよいですか?

+0

どのバージョンのCamelを使用しますか –

+0

Camelバージョン2.19.1 –

答えて

0

いいですが、このコールバックから追加したり、新しいルートを開始することはできません。このコールバックは、Camelが既存のルートを起動している間に起動され、新しいルートが開始されない「フェイルセーフ」のようなモードがあります。

ルートを追加して開始する別の方法を使用する必要があります。

+0

お勧めはありますか?これらのルートは、カスタムコンポーネントによって追加されます。おそらくカスタムコンポーネントで独自のラクテルコンテキストを作成して開始することがありますか? –

+0

EventNotifierを使用して、経路を追加できるCamelContextStartedEventに対して反応することができます。 –

+0

次の大きなリリースでこのStartupListenerに拡張機能を追加するためのチケットを記録しました:https://issues.apache.org/jira/browse/CAMEL-11985 –

0

私のコンポーネント(doStart()内)から別のCamelContextを作成し、それを開始することで、これが機能します。提案を聞いてうれしく思いますが、現時点では多かれ少なかれ機能しています。

関連する問題