Mam następujący trasa dla celów demonstracyjnychCamel adviceWith zachowuje się inaczej przy zmianie kolejność wypowiedzi splot
from("direct:external")
.routeId("external")
.to("http4://www.third-party.com/foo").id("ext");
Do testowania chciałabym * wymienić http4: punkt końcowy z bezpośrednim: punkt końcowy * dodaj makiety: punkt końcowy na końcu drogi do weryfikacji
Dodałem następujące adviceWithRouteBuilder
context.getRouteDefinition("external").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
weaveAddLast().to("mock:result");
weaveByToUri(".*http4://.*")
.replace()
.to("direct:foo");
}
});
Ten wydaje się działać, ale jeśli mogę zmienić kolejność wypowiedzi weave*
, tak jak
public void configure() throws Exception {
weaveByToUri(".*http4://.*")
.replace()
.to("direct:foo");
weaveAddLast().to("mock:result");
}
Daje mi następujący błąd
java.lang.IllegalArgumentException: Nie ma wyjścia, który pasuje : * w trasie: Trasa (zewnętrzna) [[Od [bezpośrednio: zewnętrzna]] -> [potok -> [[To [direct: foo]]]]]
Tak naprawdę oczekiwałbym otrzymania taki sam wynik, niezależnie od zamówienia.
Dla większości zastosowań, które miałem z Camelem, nigdy nie używałem funkcji tkania dla funkcji, którą chciałbyś osiągnąć. Co powiedzie się na użycie 'interceptSendToEndpoint (fromEndpoint) .skipSendToOriginalEndpoint(). To (toEndpoint);'? Ponieważ pakiet testów na wielbłądach faktycznie powoduje więcej bólu niż korzyści, stworzyłem pakiet wsparcia dla testów na wielbłądach, który jest nieco łatwiejszy w użyciu. Sprawdź to, załączone przykłady: https://github.com/gmaslowski/camel-test-support – gmaslowski