Während ich meine Camel-Anwendung debugging, erkannte ich, dass das anmutige Herunterfahren einer Route ignoriert die ausstehenden Aufgaben, die von wireTap()
ausgelöst wurden.Apache Camel: wireTap und graceful shutdown
Wenn ich eine Routendefinition wie diese:
from("direct:start")
.wireTap("bean:myWireTapBean")
.to("mock:result");
und ich einen Debug-Haltepunkt in myWireTapBean
(dh die asynchrone Verarbeitung von Wiretap aussetzen), dann ein CamelContext.stopRoute(routeId)
Aufruf erzeugt die folgenden Protokollmeldungen:
11:36:12.352 [Thread-1] INFO o.a.camel.spring.SpringCamelContext - Apache Camel 2.19.1 (CamelContext: camel-1) is shutting down
11:36:12.352 [Thread-1] INFO o.a.c.impl.DefaultShutdownStrategy - Starting to graceful shutdown 1 routes (timeout 300 seconds)
11:36:12.352 [Camel (camel-1) thread #6 - ShutdownTask] INFO o.a.c.impl.DefaultShutdownStrategy - Route: route1 shutdown complete, was consuming from: direct://myRoute
11:36:12.352 [Thread-1] INFO o.a.c.impl.DefaultShutdownStrategy - Graceful shutdown of 1 routes completed in 0 seconds
11:36:12.478 [Thread-1] WARN o.a.c.impl.DefaultInflightRepository - Shutting down while there are still 1 inflight exchanges.
11:36:12.478 [Thread-1] INFO o.a.camel.spring.SpringCamelContext - Apache Camel 2.19.1 (CamelContext: camel-1) uptime 1.411 seconds
11:36:12.478 [Thread-1] INFO o.a.camel.spring.SpringCamelContext - Apache Camel 2.19.1 (CamelContext: camel-1) is shutdown in 0.126 seconds
Gibt es eine Möglichkeit zu verhindern, dass Camel heruntergefahren wird, während es noch Inflight Exchange in der DefaultInflightRepository
gibt, die von wireTap
erstellt wurde? Ich habe die FAQ: How can I stop a route from a route bereits gelesen, aber das scheint keine Antwort auf diese Frage zu sein.
Sie können eine direkte Route für das Abhören verwenden, dann gibt es Flugmeldungen auf dieser Route. –