Ich habe die folgende Route für Demozwecke
%Vor%Zum Testen möchte ich * Ersetze den http4: Endpunkt durch einen direct: Endpunkt * Fügen Sie einen Mock: Endpunkt am Ende der Route zur Verifizierung hinzu
Ich habe den folgenden ratWithRouteBuilder
hinzugefügt %Vor% Dieser scheint zu funktionieren, aber wenn ich die Reihenfolge der weave*
-Anweisungen ändere, so
Es gibt mir den folgenden Fehler
java.lang.IllegalArgumentException: Es gibt keine Ausgaben, die übereinstimmen: * in der Route: Route (extern) [[Von [direct: external]] - & gt; [Pipeline - & gt; [[Zu [foo]]]]]]
Ich würde tatsächlich erwarten, das gleiche Ergebnis zu erhalten, unabhängig von der Reihenfolge.
Hier ist zu beachten, dass die Aufrufe weave*
nur den ursprünglichen RouteBuilder kennen. Wenn Sie also zuerst den Aufruf weaveByUri()
ausführen, wird .to("http4://www.third-party.com/foo")
durch .to("direct:foo")
ersetzt, was zufälligerweise der letzte Endpunkt Ihrer Route ist. Wenn Sie nun den Aufruf weaveAddLast()
ausführen, sucht er nach "http4://www.third-party.com/foo"
, findet ihn jedoch nicht, da er durch "direct:foo"
ersetzt wurde. Dies führt dazu, dass eine Ausnahme ausgelöst wird.
Wenn also nach dem Endpunkt "http4..."
hypothetisch ein weiterer Endpunkt vorhanden ist, sodass dieser nicht mehr der letzte Endpunkt in Ihrer Route ist, sollte Ihr adviceWith()
funktionieren. Zum Beispiel wird es funktionieren, wenn Ihre ursprüngliche Route etwa so aussieht:
Ich sollte beachten, dass ich denke, dass dies ein Fehler ist und dass die Reihenfolge keine Rolle spielen sollte.
Tags und Links apache-camel