Apache Camel在启动后立即关闭,没有记录任何原因,没有引发任何异常

时间:2018-11-08 10:22:26

标签: apache-camel shutdown

我观察到,路由定义中的错误导致了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:日志记录:级别:根目录:DEBUG] 尝试绕过路线定义没有帮助。定义路线时未捕获任何异常。

我试图将CronScheduledRoutePolicy设置为异常处理程序。 [例如。与policy.setExceptionHandler(myCamelExceptionHandlerLoggingEverything)] 什么都没有记录。没有断点被击中。

非常感谢您的帮助或对任何解决方案的引用。

拉尔夫

3 个答案:

答案 0 :(得分:2)

有多种打印精确错误的方法,这取决于开发人员如何使用骆驼路线设计应用程序/类。我已经提到了以下示例,该示例将给出您要查找的确切错误。

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:由于检测到重复的ID而无法启动路由演示:demo。请更正ID,以使其在所有路线中都是唯一的。

答案 1 :(得分:0)

您可以尝试定义自定义关闭策略。 Read here

答案 2 :(得分:0)

尝试将其添加到您的路线中,然后启动它:

getContext()。setTracing(true);

P.S。您的错误处理程序中也可能存在问题