This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch filter-kamelet2 in repository https://gitbox.apache.org/repos/asf/camel.git
commit ceb7e6fd322936494ae260353f1c255e3ee9fe31 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Feb 24 15:20:32 2024 +0100 CAMEL-18858: camel-core - Mark route as created by Kamelet so we know this, so we can filter out in tooling and whereelse (kamelet is a blackbox) --- .../MicrometerExchangeEventNotifier.java | 45 ++++++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java index 61ce90e9526..8dbac32b26f 100644 --- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java +++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java @@ -26,6 +26,7 @@ import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.Tags; import io.micrometer.core.instrument.Timer; import org.apache.camel.Exchange; +import org.apache.camel.Route; import org.apache.camel.spi.CamelEvent; import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent; import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent; @@ -33,6 +34,8 @@ import org.apache.camel.spi.CamelEvent.ExchangeEvent; import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent; import org.apache.camel.spi.CamelEvent.ExchangeSentEvent; import org.apache.camel.spi.InflightRepository; +import org.apache.camel.spi.ManagementStrategy; +import org.apache.camel.support.ExchangeHelper; import org.apache.camel.support.SimpleEventNotifierSupport; public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNotifier<ExchangeEvent> { @@ -42,6 +45,8 @@ public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNoti private Predicate<Exchange> ignoreExchanges = exchange -> false; private MicrometerExchangeEventNotifierNamingStrategy namingStrategy = MicrometerExchangeEventNotifierNamingStrategy.DEFAULT; + boolean registerKamelets; + boolean registerTemplates = true; public MicrometerExchangeEventNotifier() { super(ExchangeEvent.class); @@ -63,6 +68,15 @@ public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNoti this.namingStrategy = namingStrategy; } + @Override + protected void doInit() throws Exception { + ManagementStrategy ms = getCamelContext().getManagementStrategy(); + if (ms != null && ms.getManagementAgent() != null) { + registerKamelets = ms.getManagementAgent().getRegisterRoutesCreateByKamelet(); + registerTemplates = ms.getManagementAgent().getRegisterRoutesCreateByTemplate(); + } + } + @Override protected void doStart() throws Exception { super.doStart(); @@ -94,14 +108,29 @@ public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNoti @Override public void notify(CamelEvent eventObject) { - if (!(getIgnoreExchanges().test(((ExchangeEvent) eventObject).getExchange()))) { - handleExchangeEvent((ExchangeEvent) eventObject); - if (eventObject instanceof ExchangeCreatedEvent) { - handleCreatedEvent((ExchangeCreatedEvent) eventObject); - } else if (eventObject instanceof ExchangeSentEvent) { - handleSentEvent((ExchangeSentEvent) eventObject); - } else if (eventObject instanceof ExchangeCompletedEvent || eventObject instanceof ExchangeFailedEvent) { - handleDoneEvent((ExchangeEvent) eventObject); + if (eventObject instanceof ExchangeEvent ee) { + // skip routes that should not be included + boolean skip = false; + String routeId = ExchangeHelper.getAtRouteId(ee.getExchange()); + if (routeId != null) { + Route route = ee.getExchange().getContext().getRoute(routeId); + if (route != null) { + skip = (route.isCreatedByKamelet() && !registerKamelets) + || (route.isCreatedByRouteTemplate() && !registerTemplates); + } + } + if (skip) { + return; + } + if (!(getIgnoreExchanges().test(ee.getExchange()))) { + handleExchangeEvent(ee); + if (eventObject instanceof ExchangeCreatedEvent) { + handleCreatedEvent((ExchangeCreatedEvent) eventObject); + } else if (eventObject instanceof ExchangeSentEvent) { + handleSentEvent((ExchangeSentEvent) eventObject); + } else if (eventObject instanceof ExchangeCompletedEvent || eventObject instanceof ExchangeFailedEvent) { + handleDoneEvent((ExchangeEvent) eventObject); + } } } }