我刚开始在我的一个项目中使用Camel。我正在尝试使用Spring配置Camel,但是遇到了这样的问题 我不想使用xml配置,而是使用基于Spring的Annotations来配置路由和处理器。
我的应用程序是一个独立的Spring应用程序,它将作为Jar运行。 为了让应用程序保持运行,我有一个空的预定方法,每隔x分钟运行一次。
以下是build.gralde
// Spring //
compile('org.springframework:spring-core:5.0.0.RC2')
compile('org.springframework:spring-context:5.0.0.RC2')
compile('org.springframework:spring-beans:5.0.0.RC2')
compile('org.springframework:spring-context-support:5.0.0.RC2')
// Apache //
// Camel //
compile('org.apache.camel:camel-core:2.19.1')
compile('org.apache.camel:camel-spring:2.19.1')
beans.xml
<context:annotation-config/>
<tx:annotation-driven/>
<context:component-scan base-package="my.package" />
<camelContext id="aggregatorCamelContext" autoStartup="true" xmlns="http://camel.apache.org/schema/spring">
<package>
my.package.camel
</package>
</camelContext>
示例RouteBuilder
@Component
public class SampleRoute extends RouteBuilder {
@Autowired
MyClass myObject;
@Override
public void configure() throws Exception {
from("file:filelist")
.process(myObject)
.to("file:processedList");
}
}
让应用程序保持活力(我知道有点hacky,但现在已经足够了)
@Component
@EnableScheduling
public class KeepitAlive {
@Scheduled(fixedRate = 1000l)
public void run(){
System.out.println("KeepitAlive.run "+ Thread.currentThread().getName() );
}
}
主类。我已经尝试了两种方法,初始化Spring上下文以及Camel Main,但没有运气
public class MyApplication {
public static void main(String[] args) throws Exception {
/*AbstractXmlApplicationContext context =
new ClassPathXmlApplicationContext("path/to/beans.xml");*/
Main main = new Main();
main.setApplicationContextUri("path/to/beans.xml");
main.start();
}
}
如果我将自己的路径放在camelContext声明中,它可以正常工作,
<route>
<from uri="file:filelist"/>
<to uri="file:processedlist"/>
</route>
我也研究过Camel Spring Integration documentation,但它也包含基于xml的配置 请有人指导我正确的方向。
答案 0 :(得分:0)
最终想出来。需要在SpringRouteBuilder
类中扩展RouteBuiler
而不是SampleRoute
任何人都在努力解决问题,我建议一旦完成Camel in Action
本书
不知何故,我在一开始就错过了它,这花费了我很多时间来弄清楚这本书所涉及的琐碎事情。
答案 1 :(得分:0)
您正在使用Camel自己的包裹扫描
<package>
my.package.camel
</package>
如果您希望Camel找到Spring <contextScan>
Camel路线,您应该使用@Component
。
有关详情,请参阅Camel spring文档:http://camel.apache.org/spring.html