我使用带有JBI消息传递的 ServiceMix 3.0创建了一个基于Java的小型应用程序。
应用程序工作,我们正在使用filepoller(每5分钟)读取一个文件位置,并将文件转换为其他格式,即。 xml到pdf。
我们使用servixmix filewriter组件在其他文件位置写入输出文件。
现在我们需要使用 Apache ServiceMix 6.0和Camel 2.15.2 进行升级。
我是Apache Camel的新手。为了实现我们的应用场景,我在servicemix 6.0和camel 2.15.2上做了一些POC工作,但没有完全了解。
POC的工作方式就像使用文件,计时器,Scheduler camel组件一样。
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
from("timer://foo?period=1000").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("Hello world :"
+ new java.util.Date().toString());
}
});
}
});
context.start();
Thread.sleep(10000);
context.stop();
任何人都可以帮助实现上述方案。
请大家提出一些其他方法来获取方案。
提前致谢。
答案 0 :(得分:1)
对于读取文件,您可以使用file
(http://camel.apache.org/file2.html)组件。对于写入文件,您也可以使用file
组件。
我对文件的格式一无所知,因此无法提供有关其处理的任何建议。
对于处理,您可以使用以下组件:
xslt
(转换XML http://camel.apache.org/xslt.html),
fop
(转换为PDF http://camel.apache.org/fop.html),
velocity
(按模板http://camel.apache.org/velocity.html转换为XML),等等。
或者您可以使用某些数据格式:http://camel.apache.org/data-format.html,例如 BeanIO (http://camel.apache.org/beanio.html)。
示例:
from("file://inbox?sortBy=file:name&include=(.*[.](xml|XML)$)&delete=true&preMove=inprogress&delay=300000").
//5 min. delay between poll, consuming only xml file
routeId("testRoute")
.to("xslt:xsl/transform.xsl") //refers to the file xsl/transform.xsl on the classpath
//....... some other transformation here .......
.to("file://outbox");