Что ж, для создания маршрутов в итерации хорошо иметь некоторый объект , который содержит различные значения для одного маршрута .Давайте назовем это RouteConfiguration
, простой POJO с полями String для from
, to
и routeId
.
Мы используем YAML-файлы для настройки таких вещей, потому что у вас есть формат реального списка вместо использования «плоских списков» в файлах свойств (route[0].from
, route[0].to
).
Если вы используете Spring , вы можете напрямую преобразовать такой «список конфигураций объектов» в коллекцию объектов, используя @ConfigurationProperties
Когда вы сможете создать такойКоллекция объектов значения, вы можете просто перебрать ее.Вот сильно упрощенный пример.
@Override
public void configure() {
createConfiguredRoutes();
}
void createConfiguredRoutes() {
configuration.getRoutes().forEach(this::addRouteToContext);
}
// Implement route that is added in an iteration
private void addRouteToContext(final RouteConfiguration routeConfiguration) throws Exception {
this.camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from(routeConfiguration.getFrom())
.routeId(routeConfiguration.getRouteId())
...
.to(routeConfiguration.getTo());
}
});
}