我正在创建一个文件夹的自动轮询,我的路由是在spring XML文件中设置的,如何让应用程序保持运行并轮询该文件夹,我能够使用正常的路由来做到这一点它们在java中输入,但是现在因为使用XML route spring,我无法创建路由构建器或添加路由构建器。 我的主要是
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.camel.main.Main;
public class FileTransferinSpring {
public static void main(String args[]) throws InterruptedException {
Main main = new Main();
//main.addRouteBuilder(new //ClassPathXmlApplicationContext("MySpring.xml"));//this is now working
@SuppressWarnings("resource")
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(
"MySpring.xml");
//ctx.start();
System.out.println("Entered>>>>>");
//Thread.sleep(3000);
//ctx.stop();
}
这是我的配置文件。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:input?fileName=Hello.txt&noop=true" />
<to uri="file:output" />
</route>
<route>
<from uri="file:input?fileName=Hello2.txt&noop=true" />
<to uri="file:output" />
</route>
</camelContext>
</beans>
答案 0 :(得分:0)
您可以使用Spring中的 FileSystemWatcher 来监控文件和文件夹更改。
有关代码示例,请点击this链接。
FileSystemWatcher - Java doc。
但正如评论中所建议的那样,您不需要基于Spring的解决方案,您可以使用纯Java或Apache库。
如果您想查看Java或Apache库以获得解决方案,请按照以下示例进行操作:
答案 1 :(得分:0)
您是否正在将您的工作从Camel(java方式)转换为Camel(spring方式)?你的main方法似乎不完整,让它自动运行,将CamelContext设置为你的主对象来完成它。
public static void main(String args[]) throws InterruptedException {
Main main = new Main();
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(
"MySpring.xml");
main.setApplicationContext(ctx);
main.run();
}
答案 2 :(得分:0)
我认为您正在寻找以下解决方案。
@Component
public class FileRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file://{{dir.in}}?readLock=changed&include=.*.csv"&preMove={{dir.progress}}&move={{dir.out}}&moveFailed={{dir.error}}").setId("Poller");
}
}
请注意,如果您不使用preMove,则将在“ in”文件夹中创建默认的.camel文件夹,并将文件的一个副本移至.camel文件夹。
所以我建议您在路线中使用preMove。