1

I am looking for a way to add global exception handling on all routes generated by multiple RouteTemplates. I have tried the following way but the onException block is not getting added to the routes.

Can you help me understand what I am doing wrong?

Thanks

public abstract class BaseRouteBuilder extends RouteBuilder {
    @Override
    public void configure(){
        this.onException(IllegalStateException.class)
                .log("global onException")
                .maximumRedeliveries(2)
                .redeliveryDelay(100)   
                .logStackTrace(true)
                .to("direct:retryChannel");
    }
}
public static class SampleRouteTemplate extends BaseRouteBuilder {
        @Override
        public void configure() {
            super.configure();
            this.routeTemplate("myTemplate")
                    .templateParameter("parameter1")
                    .from("direct:start")
                    .setHeader("parameter1", constant("value1"))
                    .log("RouteCompleted");
        }
    }
Elif
  • 11
  • 2

1 Answers1

0

Try to extract a separate method for route, e.g. configureRoute() and call it in parent class in configure() method. Also make a child class non-static.

public abstract class BaseRouteBuilder extends RouteBuilder {
    @Override
    public final void configure(){
        onException(IllegalStateException.class)
            .log("global onException")
            .maximumRedeliveries(2)
            .redeliveryDelay(100)   
            .logStackTrace(true)
            .to("direct:retryChannel");
            
        configureRoute();
    }
    
    public abstract void configureRoute();
}
public class SampleRouteTemplate extends BaseRouteBuilder {
        @Override
        public void configureRoute() {
            this.routeTemplate("myTemplate")
                .templateParameter("parameter1")
                .from("direct:start")
                .setHeader("parameter1", constant("value1"))
                .log("RouteCompleted");
        }
    }
}
Andrey
  • 433
  • 1
  • 5
  • 19