2014-11-18 5 views
0

Я очень новичок в Apache Camel. Я не могу получить простейший пример Верблюда. Вот код:Camel first experience

public class CamelFE { 
    public static void main(String[] args) { 
    CamelContext cc = new DefaultCamelContext(); 
    cc.addRoutes(new RouteBuilder() { 
     @Override 
     public void configure() throws Exception { 
     System.out.println("Go!"); 
     from("file://Users/Foo/Desktop/IN") 
     .to("file://Users/Foo/Desktop/OUT"); 

    }); 
    } 
    cc.start(); 
    cc.stop(); 
} 

Обе директории существует, в from один есть один простой файл, helo.txt. Маршрут начинается, и отображается сообщение Go!, но файл не был перемещен в каталог to. Что мне не хватает?

Редактировать: Это консольный выход. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4j: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details Go!

+0

Удалите вызов 'stop()', это может препятствовать тому, чтобы маршрут мог получить файл. Появляется ли в журнале выход Apache Camel Context? – mdnghtblue

+0

Здравствуйте. Я удаляю строку stop(), но результат тот же. Я ничего не вижу в контексте Apache Camel. Я обновляю вопрос, чтобы показать вывод консоли. – Francesco

+0

Так вы видели http://www.slf4j.org/codes.html#StaticLoggerBinder для получения дополнительной информации? –

ответ

1

Я предполагаю, что вы используете Windows, так как у вас есть ссылки на Users/.../Desktop. Если это так, синтаксис файла немного отключен. Вместо file://Users/Foo/Desktop у вас должно быть file:///Users/Foo/Desktop.

Вам также необходимо предоставить достаточное время для обработки, прежде чем приложение закончит работу. Вы можете добавить Thread.sleep. Обратите внимание, что в веб-приложении это не будет проблемой, так как приложение будет работать.

public class CamelFE { 
    public static void main(String[] args) throws Exception { 
     CamelContext cc = new DefaultCamelContext(); 
     cc.addRoutes(new RouteBuilder() 
     { 

      @Override 
      public void configure() throws Exception { 
       System.out.println("Go!"); 
       from("file:///Users/Foo/Desktop/IN").to("file:///Users/Foo/Desktop/OUT"); 
      } 
     }); 

     cc.start(); 
     Thread.sleep(10000); 
     cc.stop(); 
    } 
} 
+1

См. Также этот FAQ: http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html –

+0

Claus, это намного лучшее решение для моего 'Thread.sleep' – Ray