2015-10-01 73 views
0

我正在嘗試使用Spring來配置Camel,只使用註釋和直接使用Java。下面是我創建了一個路線:用Spring配置Camel沒有Xml

@Produce(uri = "activemq:my.route") 
ProducerTemplate producer; 

@RequestMapping(value = "/test", method = RequestMethod.POST) 
public void testCamel() 
{ 
    producer.sendBody("TEST"); 
} 

需要一個駱駝背景下,這我想在我的AppConfig類中定義:

我的當前版本:

@Autowired 
private ApplicationContext applicationContext; 

@Bean 
    public CamelContext camelContext() throws Exception { 
     SpringCamelContext springCamelContext = new SpringCamelContext(applicationContext); 
     springCamelContext.addRoutes(new com.bigideas.routing.Routes()); 

     return springCamelContext; 
    } 

路由類只是一個擴展了RouteBuilder的空類。

問題是,當我實際調用testCamel方法時,我的生產者爲null。我知道我可以在xml配置文件中執行上下文,我只是想知道當我不使用xml時我做錯了什麼。

回答

1

我相信你應該按照這裏的指示:http://camel.apache.org/spring-java-config.html,所以一個@Configuration類擴展CamelConfiguration@ComponentScan

而且你應該com.bigideas.routing.Routes爲w的Spring bean太(@Bean@Component

0

使用駱駝2.18和春季啓動,駱駝背景下積聚和單元測試已經變得非常容易。

看看這個例子 https://github.com/RakeshBhat/rb-camelservlet218-xamples

擴展routebuilder應與@Component來註解的類。同樣在Spring Controller類中,您需要自動連線Camel上下文,然後使用create producer/consumer模板。確保你調用模板的啓動/停止方法,它的資源被有效地使用。