我正在尝试使用Spring仅使用注释和直接Java来配置Camel。这是我创建的路线:
@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;
}
Routes类只是一个扩展RouteBuilder的空类。
问题在于,当我实际调用testCamel方法时,我的生产者为null。我知道我可以在xml配置文件中执行上下文,我只是想知道在不使用xml时我做错了什么。
答案 0 :(得分:1)
我认为您应该按照此处的说明进行操作:http://camel.apache.org/spring-java-config.html,以及@Configuration
个CamelConfiguration
类与@ComponentScan
一起延伸com.bigideas.routing.Routes
。
此外,您的@Bean
也应该是Spring Bean(@Component
或myButton.setTitle("button text", for: UIControl.State.normal)
)
答案 1 :(得分:0)
使用camel 2.18和spring-boot,驼峰上下文构建和单元测试变得非常简单。
看看这个例子 https://github.com/RakeshBhat/rb-camelservlet218-xamples
扩展routebuilder的类应该使用@Component进行注释。同样在Spring Controller类中,您需要自动连接Camel Context,然后使用create producer / consumer模板。确保调用模板的启动/停止方法,其资源得到有效使用。