使用Spring No Xml配置Camel

时间:2015-10-01 15:38:20

标签: java spring apache-camel

我正在尝试使用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时我做错了什么。

2 个答案:

答案 0 :(得分:1)

我认为您应该按照此处的说明进行操作:http://camel.apache.org/spring-java-config.html,以及@ConfigurationCamelConfiguration类与@ComponentScan一起延伸com.bigideas.routing.Routes

此外,您的@Bean也应该是Spring Bean(@ComponentmyButton.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模板。确保调用模板的启动/停止方法,其资源得到有效使用。