Hi See routes configuration https://camel.apache.org/manual/route-configuration.html
On Mon, Apr 11, 2022 at 4:30 PM ski n <raymondmees...@gmail.com> wrote: > > I am indeed using Camel 3 (Currently 3.14.2) and using Maven. I just use > plain Java (camel core), so I have a similar setup as your example (only > I'm using Java, instead of the application.properties to configure the > Camel context and its routes). Your example helped me to also use the Yaml > dsl. > > I am still wondering how to do proper errorHandling/onException with the > routesloader. > > I can set for example the errorHandler globally: > > extendedCamelContext.setErrorHandlerFactory(routeErrorHandler); > > But I rather set it per route / per exception (and best of all from the > xml/yaml files). Like it used to be done like this: > > <camelContext id="myCamelContext" xmlns=" > http://camel.apache.org/schema/spring"> > <!-- Catch the authorization exception and set the Access Denied > message back --> > <onException> > <exception>org.apache.camel.CamelAuthorizationException</exception> > <handled> > <constant>true</constant> > </handled> > <transform> > <simple>Access Denied with the Policy of ${exception.policyId} > !</simple> > </transform> > </onException> > > <route> > <from uri="servlet:user"/> > <!-- wrap the route in the policy which enforces security check --> > <policy ref="user"> > <transform> > <simple>Normal user can access this service</simple> > </transform> > </policy> > </route> > > <route> > <from uri="servlet:admin"/> > <!-- wrap the route in the policy which enforces security check --> > <policy ref="admin"> > <transform> > <simple>Call the admin operation OK</simple> > </transform> > </policy> > </route> > > </camelContext> > > But such files are not accepted by the routesLoader. > > I also tried setting the error handler on a specific route from Java like > this: > > Route route = context.getRoute(myRouteId); > route.setErrorHandlerFactory(routeErrorHandler); > > But that didn't change anything. > > Raymond > > > > > > > > On Mon, Apr 11, 2022 at 3:36 PM Chirag <chirag.sangh...@gmail.com> wrote: > > > Hello Raymond, > > > > Are you trying to use Camel 3 ? > > Would you use Maven or Gradle to build? > > > > Here is an example: > > https://github.com/chiragsanghavi/camel-experiments/tree/main/processor > > if this helps. > > > > This example was built to demonstrate a bug- but if you update maven > > to use camel 3.1.5 - it should work. > > Only thing needed to support YAML is a change in pom.xml to include > > yaml dsl and create yaml files and put them into "routes" folder. > > > > <dependency> > > <groupId>org.apache.camel</groupId> > > <artifactId>camel-yaml-dsl</artifactId> > > </dependency> > > > > > > > > ચિરાગ/चिराग/Chirag > > ------------------------------------------ > > Sent from My Gmail Account > > > > On Mon, Apr 11, 2022 at 6:15 AM ski n <raymondmees...@gmail.com> wrote: > > > > > > Hi All, > > > > > > I like to use the routesLoader ( > > > > > https://javadoc.io/static/org.apache.camel/camel-api/3.16.0/org/apache/camel/spi/annotations/RoutesLoader.html > > > ). > > > I have some questions about how to properly use it. > > > > > > 1) Is there any documentation on how to use it? (At > > > https://camel.apache.org/manual/ or > > > https://camel.apache.org/components/next/index.html). > > > > > > 2) I could find some examples (https://github.com/apache/camel-examples > > ), > > > there the routesloader example says: > > > > > > <!-- > > > if you want to have multiple routes, you can either have multiple > > files > > > with 1 <route> per file or > > > you can use <routes> as root tag, such as > > > <routes><route>...</route><route>...</route></routes> > > > --> > > > > > > <route> > > > <from uri="timer:xml?period=5s"/> > > > <log message="I am XML"/> > > > </route> > > > > > > These examples loads xml, can it also loads other DSL's? (Like yaml or > > > Java). > > > > > > 3) How to use OnException with the RouteLoader? > > > > > > I thought maybe like this > > > > > > <routes xmlns="http://camel.apache.org/schema/spring"> > > > <onException> > > > <exception>java.lang.Exception</exception> > > > <redeliveryPolicy maximumRedeliveries="0" redeliveryDelay="5000"/> > > > <handled><constant>true</constant></handled> > > > <toD uri="file://some/directory"/> > > > </onException> > > > <route> > > > <from uri="timer:xml?period=5s"/> > > > <log message="I am XML"/> > > > </route> > > > </routes> > > > > > > But this gave me a nullpointer exception. > > > > > > 4) Load from string directly > > > > > > In Camel 2 you could load routes directly from string like this: > > > > > > ManagedCamelContext managed = > > > context.getExtension(ManagedCamelContext.class); > > > managedContext = managed.getManagedCamelContext(); > > > managedContext.addOrUpdateRoutesFromXml(routeAsString); > > > > > > In Camel 3 the "addOrUpdateRoutesFromXml" is depracated. With routeLoader > > > from string I do it like this: > > > > > > ExtendedCamelContext extendedCamelContext = > > > context.adapt(ExtendedCamelContext.class); > > > RoutesLoader loader = extendedCamelContext.getRoutesLoader(); > > > Resource resource = ResourceHelper.fromString("any.xml", route); > > > > > > loader.updateRoutes(resource); > > > > > > Is this the only way in Camel 3, or is there also a specific method to > > use > > > strings directly (and maybe only specify the DSL used) like: > > > > > > loader.updateRoutes(routeAsString, "xml"); > > > > > > > > > Raymond > > -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2