目录之间的Apache camel复制文件

时间:2016-08-02 08:25:36

标签: java spring-boot apache-camel

我是apache camel和spring boot的新手。我正在编写一个应用程序,我需要将文件从文件夹传输到jms队列。但在此之前,我试图将文件从一个文件夹转移到另一个文件夹,这是没有发生的。在将应用程序作为spring boot应用程序运行时,将创建输入文件夹。如果将文件粘贴到此文件夹中,则不会形成目标文件夹,并且也不会显示日志语句。这是我添加路线的方式:

@SpringBootApplication
public class CamelApplication extends FatJarRouter {

    public static void main(String ... args) {
        SpringApplication.run(CamelApplication.class, args);
    }

    @Override
    public void configure() throws Exception {
        from("file:input?noop=true")
        .log("Read from the input file")
        .to("file:destination")
        .log("Written to output file");
    }
}

2 个答案:

答案 0 :(得分:5)

它应该有用,它确实对我有用,也许你还没有在IDE中刷新你的工作区,如果这是你跟踪进度的方式。

修改

我现在看到您的配置出了什么问题 - 您可能在类路径上没有spring-boot-starter-web,因此您的主要方法不会被阻止并立即退出。

您应该从CamelApplication删除主要方法,并将此条目添加到application.properties

spring.main.sources = com.example.CamelApplication

或者,您可以更改主要方法以运行CamelSpringBootApplicationController

@SpringBootApplication
public class CamelApplication extends FatJarRouter {

    public static void main(String... args) {
        ApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
        CamelSpringBootApplicationController applicationController =
                applicationContext.getBean(CamelSpringBootApplicationController.class);
        applicationController.run();
    }

    @Override
    public void configure() throws Exception {
        from("file:input?noop=true")
                .log("Read from the input file")
                .to("file:destination")
                .log("Written to output file");
    }
}

或者,您可以将其添加到pom.xml中以强制嵌入式Tomcat启动并阻止您的main方法:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

答案 1 :(得分:0)

添加到 application.properties 以保持 JVM 运行

camel.springboot.main-run-controller = true