This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 3d351350912 camel-core - Avoid clutter JMX with anonymous internal EventNotifiers 3d351350912 is described below commit 3d35135091266b2ced6c447fe92ed86dd7d2e936 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Mar 14 09:26:23 2024 +0100 camel-core - Avoid clutter JMX with anonymous internal EventNotifiers --- .../camel/impl/debugger/DefaultDebugger.java | 3 +- .../camel/impl/engine/CamelInternalProcessor.java | 3 +- .../engine/DefaultRuntimeEndpointRegistry.java | 3 +- .../camel/impl/cluster/ClusteredRoutePolicy.java | 4 +- .../apache/camel/impl/console/EventConsole.java | 3 +- .../org/apache/camel/builder/NotifyBuilder.java | 3 +- .../org/apache/camel/main/BaseMainSupport.java | 78 ++++++++++++---------- .../camel/main/MainDurationEventNotifier.java | 4 +- .../management/JmxNotificationEventNotifier.java | 1 + .../throttling/ThrottlingInflightRoutePolicy.java | 3 +- 10 files changed, 62 insertions(+), 43 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java index 86f8ca36661..b001120c5ac 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultDebugger.java @@ -30,6 +30,7 @@ import org.apache.camel.Exchange; import org.apache.camel.ExchangePropertyKey; import org.apache.camel.MessageHistory; import org.apache.camel.NamedNode; +import org.apache.camel.NonManagedService; import org.apache.camel.Processor; import org.apache.camel.spi.Breakpoint; import org.apache.camel.spi.CamelEvent; @@ -369,7 +370,7 @@ public class DefaultDebugger extends ServiceSupport implements Debugger, CamelCo return "DefaultDebugger"; } - private final class DebugEventNotifier extends EventNotifierSupport { + private final class DebugEventNotifier extends EventNotifierSupport implements NonManagedService { private DebugEventNotifier() { setIgnoreCamelContextEvents(true); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java index 9823a00f2f9..812794723bf 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java @@ -32,6 +32,7 @@ import org.apache.camel.ExchangePropertyKey; import org.apache.camel.MessageHistory; import org.apache.camel.NamedNode; import org.apache.camel.NamedRoute; +import org.apache.camel.NonManagedService; import org.apache.camel.Ordered; import org.apache.camel.Processor; import org.apache.camel.Route; @@ -1219,7 +1220,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In /** * Event notifier for {@link BacklogTracerAdvice} to capture {@link Exchange} sent to endpoints during tracing. */ - private static final class BacklogTraceAdviceEventNotifier extends SimpleEventNotifierSupport { + private static final class BacklogTraceAdviceEventNotifier extends SimpleEventNotifierSupport implements NonManagedService { private final Object dummy = new Object(); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java index 05e18f97b13..f3748e91ce9 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Set; import org.apache.camel.Endpoint; +import org.apache.camel.NonManagedService; import org.apache.camel.spi.CamelEvent; import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent; import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent; @@ -41,7 +42,7 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport implements RuntimeEndpointRegistry { +public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport implements RuntimeEndpointRegistry, NonManagedService { private static final Logger LOG = LoggerFactory.getLogger(DefaultRuntimeEndpointRegistry.class); diff --git a/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java index 349c2ef4ab4..90a7b5fb6b5 100644 --- a/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java +++ b/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.ExtendedStartupListener; +import org.apache.camel.NonManagedService; import org.apache.camel.Route; import org.apache.camel.ServiceStatus; import org.apache.camel.api.management.ManagedAttribute; @@ -360,7 +361,8 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca } } - private class CamelContextStartupListener extends SimpleEventNotifierSupport implements ExtendedStartupListener { + private class CamelContextStartupListener extends SimpleEventNotifierSupport + implements ExtendedStartupListener, NonManagedService { @Override public void notify(CamelEvent event) throws Exception { onCamelContextStarted(); diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java index 106472c9416..a12479dc095 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.camel.NonManagedService; import org.apache.camel.spi.CamelEvent; import org.apache.camel.spi.Configurer; import org.apache.camel.spi.Metadata; @@ -171,7 +172,7 @@ public class EventConsole extends AbstractDevConsole { return arr; } - private class ConsoleEventNotifier extends EventNotifierSupport { + private class ConsoleEventNotifier extends EventNotifierSupport implements NonManagedService { @Override public void notify(CamelEvent event) throws Exception { diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java index 18dde9db1bd..77f14e9bdf1 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/NotifyBuilder.java @@ -30,6 +30,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.Expression; +import org.apache.camel.NonManagedService; import org.apache.camel.Predicate; import org.apache.camel.RuntimeCamelException; import org.apache.camel.spi.CamelEvent; @@ -1322,7 +1323,7 @@ public class NotifyBuilder { /** * Notifier which hooks into Camel to listen for {@link Exchange} relevant events for this builder */ - private final class ExchangeNotifier extends EventNotifierSupport { + private final class ExchangeNotifier extends EventNotifierSupport implements NonManagedService { @Override public void notify(CamelEvent event) throws Exception { diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java index da315a53a79..afb703f4e9d 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java @@ -42,6 +42,7 @@ import org.apache.camel.Component; import org.apache.camel.Configuration; import org.apache.camel.ExtendedCamelContext; import org.apache.camel.NoSuchLanguageException; +import org.apache.camel.NonManagedService; import org.apache.camel.PropertiesLookupListener; import org.apache.camel.RuntimeCamelException; import org.apache.camel.Service; @@ -731,41 +732,7 @@ public abstract class BaseMainSupport extends BaseService { // we want to log the property placeholder summary after routes has been started, // but before camel context logs that it has been started, so we need to use an event listener if (standalone && mainConfigurationProperties.isAutoConfigurationLogSummary()) { - camelContext.getManagementStrategy().addEventNotifier(new SimpleEventNotifierSupport() { - @Override - public boolean isEnabled(CamelEvent event) { - return event instanceof CamelEvent.CamelContextRoutesStartedEvent; - } - - @Override - public void notify(CamelEvent event) throws Exception { - // log summary of configurations - if (!propertyPlaceholders.isEmpty()) { - boolean header = true; - for (var entry : propertyPlaceholders.entrySet()) { - String k = entry.getKey().toString(); - Object v = entry.getValue(); - Object dv = propertyPlaceholders.getDefaultValue(k); - // skip logging configurations that are using default-value - // or a kamelet that uses templateId as a parameter - boolean same = ObjectHelper.equal(v, dv); - boolean skip = "templateId".equals(k); - if (!same && !skip) { - if (header) { - LOG.info("Property-placeholders summary"); - header = false; - } - String loc = locationSummary(propertyPlaceholders, k); - if (SensitiveUtils.containsSensitive(k)) { - LOG.info(" {} {}=xxxxxx", loc, k); - } else { - LOG.info(" {} {}={}", loc, k, v); - } - } - } - } - } - }); + camelContext.getManagementStrategy().addEventNotifier(new PlaceholderSummaryEventNotifier(propertyPlaceholders)); } } @@ -2324,4 +2291,45 @@ public abstract class BaseMainSupport extends BaseService { } } + private static class PlaceholderSummaryEventNotifier extends SimpleEventNotifierSupport implements NonManagedService { + private final OrderedLocationProperties propertyPlaceholders; + + public PlaceholderSummaryEventNotifier(OrderedLocationProperties propertyPlaceholders) { + this.propertyPlaceholders = propertyPlaceholders; + } + + @Override + public boolean isEnabled(CamelEvent event) { + return event instanceof CamelEvent.CamelContextRoutesStartedEvent; + } + + @Override + public void notify(CamelEvent event) throws Exception { + // log summary of configurations + if (!propertyPlaceholders.isEmpty()) { + boolean header = true; + for (var entry : propertyPlaceholders.entrySet()) { + String k = entry.getKey().toString(); + Object v = entry.getValue(); + Object dv = propertyPlaceholders.getDefaultValue(k); + // skip logging configurations that are using default-value + // or a kamelet that uses templateId as a parameter + boolean same = ObjectHelper.equal(v, dv); + boolean skip = "templateId".equals(k); + if (!same && !skip) { + if (header) { + LOG.info("Property-placeholders summary"); + header = false; + } + String loc = locationSummary(propertyPlaceholders, k); + if (SensitiveUtils.containsSensitive(k)) { + LOG.info(" {} {}=xxxxxx", loc, k); + } else { + LOG.info(" {} {}={}", loc, k, v); + } + } + } + } + } + } } diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java b/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java index 9fde1dd5ed7..c94ed37a44a 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.LongAdder; import org.apache.camel.CamelContext; +import org.apache.camel.NonManagedService; import org.apache.camel.spi.CamelEvent; import org.apache.camel.support.EventNotifierSupport; import org.apache.camel.util.StopWatch; @@ -32,7 +33,8 @@ import org.slf4j.LoggerFactory; * A {@link org.apache.camel.spi.EventNotifier} to trigger (shutdown of the Main JVM, or stopping all routes) when * maximum number of messages has been processed. */ -public class MainDurationEventNotifier extends EventNotifierSupport { +public class MainDurationEventNotifier extends EventNotifierSupport implements NonManagedService { + private static final Logger LOG = LoggerFactory.getLogger(MainDurationEventNotifier.class); private enum Action { diff --git a/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java b/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java index e74d4aa5157..7e51c9c88ea 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java @@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory; * A JMX based {@link EventNotifier} which broadcasts JMX {@link Notification}s. */ public class JmxNotificationEventNotifier extends EventNotifierSupport implements JmxNotificationBroadcasterAware { + private static final Logger LOG = LoggerFactory.getLogger(JmxNotificationEventNotifier.class); private final AtomicLong counter = new AtomicLong(); private NotificationBroadcasterSupport notificationBroadcaster; diff --git a/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java b/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java index f979d92b205..d31ac648bd7 100644 --- a/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java +++ b/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java @@ -26,6 +26,7 @@ import org.apache.camel.CamelContextAware; import org.apache.camel.Consumer; import org.apache.camel.Exchange; import org.apache.camel.LoggingLevel; +import org.apache.camel.NonManagedService; import org.apache.camel.Route; import org.apache.camel.spi.CamelEvent; import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent; @@ -285,7 +286,7 @@ public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements * {@link org.apache.camel.spi.EventNotifier} to keep track on when {@link Exchange} is done, so we can throttle * accordingly. */ - private class ContextScopedEventNotifier extends EventNotifierSupport { + private class ContextScopedEventNotifier extends EventNotifierSupport implements NonManagedService { @Override public void notify(CamelEvent event) {