Apache Camel 在启动后立即关闭,没有记录任何原因,也没有抛出异常
Apache Camel shuts down right after start, no reason logged, no exception thrown
我观察到,路由定义中的错误导致应用程序静默关闭,这是由 Camel 引起的。我如何配置 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)]
什么都没有记录。没有命中断点。
非常感谢您的帮助或对任何解决方案的参考。
拉尔夫
您可以尝试定义自定义关机策略。 Read here
有多种方法可以打印出确切的错误,这取决于开发人员如何使用骆驼路线设计 app/class。我在下面提到的示例将给出您正在寻找的确切错误。
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,使其在所有路线中都是唯一的。
尝试在你的路线中添加这个然后启动它:
getContext().setTracing(true);
P.S。您的错误处理程序也可能有问题
我观察到,路由定义中的错误导致应用程序静默关闭,这是由 Camel 引起的。我如何配置 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)] 什么都没有记录。没有命中断点。
非常感谢您的帮助或对任何解决方案的参考。
拉尔夫
您可以尝试定义自定义关机策略。 Read here
有多种方法可以打印出确切的错误,这取决于开发人员如何使用骆驼路线设计 app/class。我在下面提到的示例将给出您正在寻找的确切错误。
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,使其在所有路线中都是唯一的。
尝试在你的路线中添加这个然后启动它:
getContext().setTracing(true);
P.S。您的错误处理程序也可能有问题