RoutePolicy по умолчанию в Apache CamelJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 RoutePolicy по умолчанию в Apache Camel

Сообщение Anonymous »

У меня следующий сценарий
RoutePolicy:

Код: Выделить всё

@Slf4j
@RequiredArgsConstructor
public class LoggingPolicy extends RoutePolicySupport {
private final String greeting;

@Override
public void onExchangeBegin(Route route, Exchange exchange) {
super.onExchangeBegin(route, exchange);
log.info("%s from LoggingPolicy".formatted(greeting));
}
}
BaseRouteBuilder:

Код: Выделить всё

public abstract class BaseRouteBuilder
extends RouteBuilder {
@Override
public void configure() throws Exception {

onException()
.handled(true)
.log("Exception occured")
.end();

configRoutes();
}

abstract void configRoutes();
}
Две реализации:

Код: Выделить всё

@Component
public class HelloRouteBuilder extends BaseRouteBuilder {
@Override
void configRoutes() {
from("timer:hello?repeatCount=1")
.routeId("HelloRoute")
.routePolicy( new LoggingPolicy("Hello"))
.log("HelloRoute Completed");
}
}

@Component
public class ByeRouteBuilder extends BaseRouteBuilder {
@Override
void configRoutes() {
from("timer:bye?repeatCount=1")
.routeId("ByeRoute")
.routePolicy( new LoggingPolicy("Bye"))
.log("ByeRoute Completed");
}
}
и, наконец, еще один RouteBuilder, не унаследованный от BaseRouteBuilder

Код: Выделить всё

@Component
public class AnotherRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:another?repeatCount=1")
.routeId("AnotherRoute")
.log("AnotherRoute Completed");
}
}
Все работает так, как ожидалось.
Теперь я хочу делегировать LoggingPolicy в BaseRouteBuilder, чтобы
  • Политика журналирования применяется ко всем маршрутам во всех RouteBuilder, наследующих форму BaseRouteBuilder (в этом примере HelloRoute и ByeRoute, но не AnotherRoute< /code>)
  • параметр конструктора (

    Код: Выделить всё

    greeting
    ) по умолчанию имеет значение «Привет», но его можно переопределить в построителе маршрутов.
В мой реальный вариант использования: у меня более 100 RouteBuilders, и я хочу добавить LoggingPolicy ко всем из них. Большинство из них имеют параметры по умолчанию, но мне нужно переопределить параметры для некоторых маршрутов.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ache-camel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»