2016-08-15 3 views
2

私はラクダのルートを追加している春のブートアプリケーションがあります。ルートが定義されているクラスは、FatJarRouterを拡張し、@Componentで注釈が付けられます。アプリケーションがスプリングブートアプリケーションとして実行されると、ルートは特定されません。しかし、@SpringBootApplicationアノテーションでメインクラスのルートを記述すると、そのルートが特定されます。これは現在のログに表示されます。Apacheのラクダのルートが特定されていません

o.a.camel.spring.SpringCamelContext:合計0の経路が開始され、そのうちの0が開始されます。 oacamel.spring.SpringCamelContext:Apacheのキャメルの2.17.2(CamelContext:ラクダ-4)は0.026秒で

を開始する方法ルートととしても、オーバーライドでアノテートされています

@Override 
public void configure() throws Exception{ 
from("file:\\input").to("file:\\output"); 
} 

方法を教えてください私は別のクラスとしてそれを書いている間にルートを特定することができますが、メインクラスではありません。不足しているものはありますか?

+0

camelContextの初期化を表示できますか?私は[この記事はあなたを助けます]と思う(http://camel.apache.org/spring-boot.html) –

答えて

2

私は、あなたがスプリングブートを正しく実行していないか、またはFatJarRouterがスプリングブートのコンポーネントスキャンパスにないと思います。あなたが春のブートアプリケーションクラスを持っているとしましょう:

package com.example; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class DemoApplication { 

    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(DemoApplication.class, args); 
     System.out.println("Printing out "); 

     Map<String, RouteBuilder> routeBuilders = 
      ctx.getBeansOfType(RouteBuilder.class); 
     System.out.println(routeBuilders); 

     CamelSpringBootApplicationController applicationController = 
      ctx.getBean(CamelSpringBootApplicationController.class); 
     applicationController.run(); 
    } 
} 

あなたFatJarRouterは、例えば、(com.exampleこの場合)またはサブパッケージ内の同じパッケージになければなりませんcom.example.camel:ラクダよくあるご質問文書から

package com.example.camel; 

import org.apache.camel.Exchange; 
import org.apache.camel.spring.boot.FatJarRouter; 
import org.springframework.stereotype.Component; 

@Component 
public class DemoRouteBuilder extends FatJarRouter { 

    @Override 
    public void configure() throws Exception { 
     from("timer:sender?delay=3000&period=5000") 
      .log("Ping!"); 
    } 
} 
+0

ルートはメインのSpringブートアプリケーションクラスのサブパッケージにあります。サブパッケージやその他のパッケージがSpringブートのクラスパス上にあるかどうかを確認する方法はありますか。すべてのパッケージはsrcフォルダの一部です。 – Megha

+1

それから間違いなくピックアップする必要があります。あなた自身の '@ ComponentScan'がデフォルトのものを上書きしない限り。あなたの '@ SpringBootApplication'クラスとあなたのルータを共有できますか? –

関連する問題