Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
-
Unknown
Description
We often struggle the issue of the correct Route naming order dependency:
Improvement: Priorize RouteBuilder with RouteTemplates
Testcase:
Name your RouteTemplate: ZTemplate
and another Routebuilder which will use the defined Template in ZTemplate.
The Routebuilder will fail because the ZTemplate Route was not yet added to the routescollections.
Suggestion: Use a dedicated class e.g. RouteTemplateBuilder to prioritize Routebuilder with templates
See: RoutesConfigure.java
private void addDiscoveredRoutes(CamelContext camelContext, List<RoutesBuilder> routes) throws Exception {
// sort routes according to ordered
routes.sort(OrderedComparator.get());
// first add the routes configurations as they are globally for all routes
for (RoutesBuilder builder : routes) {
if (builder instanceof RouteConfigurationsBuilder) {
RouteConfigurationsBuilder rcb = (RouteConfigurationsBuilder) builder;
LOG.debug("Adding routes configurations into CamelContext from RouteConfigurationsBuilder: {}", rcb);
camelContext.addRoutesConfigurations(rcb);
}
}
// first add the all route templates as they are globally for all routes
for (RoutesBuilder builder : routes) {
if (builder instanceof RouteTemplateBuilder) {
LOG.debug("Adding route tempaltes into CamelContext from RoutesBuilder: {}", builder);
camelContext.addRoutes(builder);
}
}
// then add the routes
for (RoutesBuilder builder : routes) {
LOG.debug("Adding routes into CamelContext from RoutesBuilder: {}", builder);
camelContext.addRoutes(builder);
}
}
}
Attachments
Attachments
Issue Links
- relates to
-
CAMEL-18764 camel-core - templatedRoute builder from Java cannot use templates from other DSLs
- Resolved