Копия верблюда Apache между каталогами

Я новичок в Apache Camel и весенний ботинок. Я пишу приложение, в котором мне нужно перенести файл из папки в очередь jms. Но перед этим я пытаюсь перенести файл из одной папки в другую, чего не происходит. При запуске приложения в качестве приложения весенней загрузки создается входная папка. Если вставить файл в эту папку, папка назначения не будет сформирована, а операторы журнала также не появятся. Вот как я добавил маршрут:

@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 ответа

Решение

Это должно работать, и это работает для меня, возможно, вы не обновили свое рабочее пространство в 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 запускать и блокировать ваш основной метод:

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

добавьте в application.properties, чтобы JVM продолжала работать

camel.springboot.main-run-controller = true

Другие вопросы по тегам