<dependencies>
<!-- Camel dependencies -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>x.x.x</version>
</dependency>
<!-- CDI dependencies -->
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>x.x.x</version>
</dependency>
<!-- Other dependencies -->
...
</dependencies>
import org.apache.camel.builder.RouteBuilder;
import javax.enterprise.inject.Produces;
import javax.inject.Named;
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
}
@Produces
public ErrorHandler errorHandler() {
return new ErrorHandler();
}
}
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
public class ErrorHandler implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
Exception exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
String errorMessage = exception.getMessage();
}
}
import org.apache.camel.cdi.CdiCamelContext;
import org.apache.camel.cdi.Uri;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
@Startup
public class CamelApplication {
@Inject
private CdiCamelContext camelContext;
@Inject
@Uri("direct:start")
private ProducerTemplate producerTemplate;
@Inject
private MyRouteBuilder myRouteBuilder;
@PostConstruct
public void init() throws Exception {
camelContext.addRoutes(myRouteBuilder);
producerTemplate.sendBody("Test Message");
}
}