Apache Camel выключается сразу после запуска, ни одна причина не регистрируется, исключение не выбрасывается - PullRequest
0 голосов
/ 08 ноября 2018

Наблюдаю, что ошибки в определении маршрута приводят к тихому завершению работы приложения, вызванному верблюдом. Как я могу настроить Camel так, чтобы он говорил мне, что именно ему не нравится.

Простой пример: назначение повторяющихся имен маршрутов

Если я определяю два маршрута с разными именами [с помощью: .id ("route name")], приложение запускается и сообщает о готовности.

Если я по ошибке использую имя дважды, приложение не запускается полностью, и Camel объявляет:

Apache Camel 2.22.0 (CamelContext: camel-1) is shutting down
Apache Camel 2.22.0 (CamelContext: camel-1) uptime 0.332 seconds
Apache Camel 2.22.0 (CamelContext: camel-1) is shutdown in 0.017 seconds
Stopping service [Tomcat]
HikariPool-1 - Shutdown initiated ...
HikariPool-1 - Shutdown completed.
Process finished with exit code 0

Код выхода 0, по-видимому, предполагает неисключительное завершение работы.

Такое же раннее завершение работы произошло, когда я добавил CronScheduledRoutePolicy к маршруту. [например. с .routePolicy (политика)] Выключается, если я добавляю экземпляр по умолчанию или устанавливаю какие-либо настройки в политике.

Я увеличил уровень регистрации и получил значительно больше фонового шума, но никаких новых результатов. [используя application.yml: ведение журнала: уровень: ROOT: DEBUG] Попытка поймать вокруг определения маршрута не помогла. На момент определения маршрута не было обнаружено никаких исключений.

Я пытался установить CronScheduledRoutePolicy обработчик исключений. [Например. с policy.setExceptionHandler (myCamelExceptionHandlerLoggingEverything)] Ничто не вошло. Точка останова не была достигнута.

Буду очень признателен за вашу помощь или ссылки на любые решения.

Ralf

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Есть несколько способов напечатать точную ошибку, и это зависит от того, как разработчик разрабатывает приложение / класс с верблюжьим маршрутом. Я привел ниже пример, который даст точную ошибку, которую вы ищете.

public class CamelPrintingExample {

   public static void main(String[] args) throws Exception {
      CamelContext camelContext = new DefaultCamelContext();
      try {
         camelContext.addRoutes(new RouteBuilder() {
            public void configure() {


               from("file:C:\\input\\").routeId("demo")
                  .to("file:C:\\output\\").end();

               from("file:C:\\input\\").routeId("demo")
                 .to("file:C:\\output\\").end();

            }
         });
         camelContext.start();
         Thread.sleep(300000);
         camelContext.stop();
      } catch (Exception camelException) {    
         camelException.printStackTrace();

      }
   }
}

Запустив это, я получил ошибку ниже. org.apache.camel.FailedToStartRouteException: не удалось запустить демонстрацию маршрута из-за обнаруженного дублированного идентификатора: demo. Пожалуйста, исправьте идентификаторы, чтобы они были уникальными среди всех ваших маршрутов.

0 голосов
/ 09 ноября 2018

Попробуйте добавить это в свой маршрут и затем запустите:

.

getContext () setTracing (истина);

P.S. проблема также может быть в вашем обработчике ошибок

0 голосов
/ 08 ноября 2018

Вы можете попытаться определить собственную стратегию выключения. Читайте здесь

...