2016-08-15 3 views
2

나는 낙타 경로를 추가 할 봄철 응용 프로그램을 가지고 있습니다. 경로가 정의 된 클래스는 FatJarRouter를 확장하고 @Component로 주석 처리됩니다. 응용 프로그램이 스프링 부팅 응용 프로그램으로 실행되면 경로가 식별되지 않습니다. 하지만 @SpringBootApplication 주석을 사용하여 기본 클래스에 경로를 작성하면 경로가 식별됩니다. 다음과 같이 로그에 표시됩니다.Apache 낙타 경로가 확인되지 않았습니다.

o.a.camel.spring.SpringCamelContext : 총 0 개의 라우트 (0 개가 시작됨). oacamel.spring.SpringCamelContext : 아파치 낙타 2.17.2은 (CamelContext는 : 낙타-4) :

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

나 방법을 알려주십시오 0.026 초

이 경로와 방법은 또한으로 재정의 주석을 붙일 수

시작 별도의 클래스로 작성하는 동안 경로를 식별 할 수 있습니까?하지만 메인 클래스에는 작성하지 마십시오. 누락 된 것이 있습니까?

+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

경로는 주요 스프링 부팅 응용 프로그램 클래스의 하위 패키지에 있습니다. 하위 패키지 또는 다른 패키지가 스프링 부트의 클래스 경로에 있는지 어떻게 확인할 수 있습니까? 모든 패키지는 src 폴더의 일부입니다. – Megha

+1

그런 다음 반드시 픽업해야합니다. 자신 만의'@ ComponentScan'이 디폴트 값을 오버라이드하지 않는 한. '@ SpringBootApplication' 클래스와 라우터를 공유 할 수 있습니까? –

관련 문제