This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.20.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit 104cf42bba1d4bc325b0aaa7a9af031ea7603daa Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Dec 28 11:14:06 2022 +0100 CAMEL-18845: camel-core - Performance overhead for async processing event emitting that is not needed usually --- .../src/main/java/org/apache/camel/tracing/Tracer.java | 9 +++++++++ .../src/main/java/org/apache/camel/spi/EventNotifier.java | 7 ++----- .../org/apache/camel/impl/engine/CamelInternalProcessor.java | 2 +- .../src/main/java/org/apache/camel/processor/SendProcessor.java | 2 +- .../org/apache/camel/support/SimpleEventNotifierSupport.java | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java index c7ef133c491..71eab56c8d8 100644 --- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java +++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java @@ -232,6 +232,15 @@ public abstract class Tracer extends ServiceSupport implements RoutePolicyFactor private final class TracingEventNotifier extends EventNotifierSupport { + public TracingEventNotifier() { + // ignore these + setIgnoreCamelContextEvents(true); + setIgnoreCamelContextInitEvents(true); + setIgnoreRouteEvents(true); + // we need also async processing started events + setIgnoreExchangeAsyncProcessingStartedEvents(false); + } + @Override public void notify(CamelEvent event) throws Exception { try { diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java b/core/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java index 9d1f8a688ec..08527e2b503 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java @@ -96,10 +96,7 @@ public interface EventNotifier { void setIgnoreStepEvents(boolean ignoreStepEvents); - default void setIgnoreExchangeAsyncProcessingStartedEvents(boolean ignoreExchangeAsyncProcessingStartedEvents) { - } + void setIgnoreExchangeAsyncProcessingStartedEvents(boolean ignoreExchangeAsyncProcessingStartedEvents); - default boolean isIgnoreExchangeAsyncProcessingStartedEvents() { - return false; - } + boolean isIgnoreExchangeAsyncProcessingStartedEvents(); } 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 d16d1fab5d4..e05b6ab8d22 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 @@ -391,7 +391,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In } boolean sync = processor.process(exchange, async); if (!sync) { - EventHelper.notifyExchangeAsyncProcessingStartedEvent(exchange.getContext(), exchange); + EventHelper.notifyExchangeAsyncProcessingStartedEvent(camelContext, exchange); } // ---------------------------------------------------------- diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java index f4138b74b30..6782c7f3170 100644 --- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java +++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java @@ -171,7 +171,7 @@ public class SendProcessor extends AsyncProcessorSupport implements Traceable, E LOG.debug(">>>> {} {}", destination, exchange); boolean sync = producer.process(exchange, ac); if (!sync) { - EventHelper.notifyExchangeAsyncProcessingStartedEvent(exchange.getContext(), exchange); + EventHelper.notifyExchangeAsyncProcessingStartedEvent(camelContext, exchange); } return sync; } catch (Throwable throwable) { diff --git a/core/camel-support/src/main/java/org/apache/camel/support/SimpleEventNotifierSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/SimpleEventNotifierSupport.java index 16a34d9d091..fa3c71f4be4 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/SimpleEventNotifierSupport.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/SimpleEventNotifierSupport.java @@ -38,7 +38,7 @@ public abstract class SimpleEventNotifierSupport extends ServiceSupport implemen boolean ignoreExchangeEvents; boolean ignoreExchangeCreatedEvent; boolean ignoreExchangeCompletedEvent; - boolean ignoreExchangeAsyncProcessingStartedEvents; + boolean ignoreExchangeAsyncProcessingStartedEvents = true; // special need for camel-tracing/camel-opentelemtry boolean ignoreExchangeFailedEvents; boolean ignoreExchangeRedeliveryEvents; boolean ignoreExchangeSendingEvents;