Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apache Camel shuts down right after start, no reason logged, no exception thrown

I observe, that errors in the route definition lead to a silent shutdown of the application, caused by Camel. How can I configure Camel to telling me what exactly it dislikes.

Simple example: Assigning duplicate route names

If I define two routes with different names [by using: .id ("route name")], then the application starts and reports readiness.

If I mistakenly use a name twice, the application fails to start completely and Camel announces:

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

The exit code 0 seems to suggest a non-exceptional shutdown.

The same early shutdown happened, when I added a CronScheduledRoutePolicy to a route. [e.g. with .routePolicy (policy)] It shuts down if I add a default instance or if I make any settings to the policy.

I increased the log level and got significantly more background noise, but no new findings. [using application.yml: logging: level: ROOT: DEBUG] A try catch around the route definition didn't help. No exception was caught at the time of the route definition.

I tried to set the CronScheduledRoutePolicy an exception handler. [E.g. with policy.setExceptionHandler (myCamelExceptionHandlerLoggingEverything)] Nothing got logged. No breakpoint was hit.

I would be very grateful for your help or references to any solutions.

Ralf

like image 269
Ralf K. Avatar asked Jan 18 '26 18:01

Ralf K.


1 Answers

There are multiple ways to print an exact error and it depends on how developer design app/class with the camel route. I have mentioned below example which will give exact error you are looking for.

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();

      }
   }
}

By running this I got below error. org.apache.camel.FailedToStartRouteException: Failed to start route demo because of duplicate id detected: demo. Please correct ids to be unique among all your routes.

like image 65
bvyas Avatar answered Jan 20 '26 21:01

bvyas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!