You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/03/31 11:05:40 UTC

[camel] branch main updated (54a83107351 -> 6085a54dd8e)

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 54a83107351 Regen for commit 6d95ad68fd6120e0fb89efdf3cb20263dfc6bc72 (#9731)
     new fa2cc3f2bec CAMEL-15105: make the ErrorHandlerExecutorService a plugin of the context
     new 6085a54dd8e CAMEL-15105: make the ConfigurerResolver a plugin of the context

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/camel/ExtendedCamelContext.java     | 19 ------------
 .../camel/impl/engine/AbstractCamelContext.java    |  5 +---
 .../impl/engine/DefaultCamelContextExtension.java  | 34 ----------------------
 .../engine/DefaultServiceBootstrapCloseable.java   |  4 +--
 .../camel/impl/engine/SimpleCamelContext.java      |  2 ++
 .../camel/impl/ExtendedCamelContextConfigurer.java |  6 ----
 .../impl/lw/LightweightCamelContextExtension.java  | 17 -----------
 .../errorhandler/RedeliveryErrorHandler.java       |  3 +-
 .../java/org/apache/camel/main/MainHelper.java     |  3 +-
 .../org/apache/camel/support/PluginHelper.java     | 32 ++++++++++++++++++++
 10 files changed, 40 insertions(+), 85 deletions(-)


[camel] 02/02: CAMEL-15105: make the ConfigurerResolver a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6085a54dd8e6707945b26c88e1b2807a9fda8838
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 31 11:46:26 2023 +0200

    CAMEL-15105: make the ConfigurerResolver a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java  | 13 -------------
 .../camel/impl/engine/AbstractCamelContext.java      |  2 --
 .../impl/engine/DefaultCamelContextExtension.java    | 20 --------------------
 .../engine/DefaultServiceBootstrapCloseable.java     |  4 ++--
 .../camel/impl/ExtendedCamelContextConfigurer.java   |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java    | 11 -----------
 .../main/java/org/apache/camel/main/MainHelper.java  |  3 +--
 .../java/org/apache/camel/support/PluginHelper.java  | 16 ++++++++++++++++
 8 files changed, 19 insertions(+), 56 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 7d4b51aebfc..2afb5390787 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -29,7 +29,6 @@ import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
-import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.DeferServiceFactory;
 import org.apache.camel.spi.EndpointStrategy;
@@ -389,18 +388,6 @@ public interface ExtendedCamelContext {
      */
     FactoryFinder getBootstrapFactoryFinder(String path);
 
-    /**
-     * Gets the bootstrap {@link ConfigurerResolver} to use. This bootstrap resolver is only intended to be used during
-     * bootstrap (starting) CamelContext.
-     */
-    ConfigurerResolver getBootstrapConfigurerResolver();
-
-    /**
-     * sets the bootstrap {@link ConfigurerResolver} to use. This bootstrap resolver is only intended to be used during
-     * bootstrap (starting) CamelContext.
-     */
-    void setBootstrapConfigurerResolver(ConfigurerResolver configurerResolver);
-
     /**
      * Gets the FactoryFinder which will be used for the loading the factory class from META-INF in the given path
      *
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 13e0ebdc8d2..5be02c3e266 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -203,7 +203,6 @@ public abstract class AbstractCamelContext extends BaseService
     final List<BootstrapCloseable> bootstraps = new CopyOnWriteArrayList<>();
     final Map<String, FactoryFinder> bootstrapFactories = new ConcurrentHashMap<>();
     volatile FactoryFinder bootstrapFactoryFinder;
-    volatile ConfigurerResolver bootstrapConfigurerResolver;
     final Object lock = new Object();
     final RouteController internalRouteController = new InternalRouteController(this);
     volatile DeferServiceFactory deferServiceFactory;
@@ -3267,7 +3266,6 @@ public abstract class AbstractCamelContext extends BaseService
         getTypeConverterRegistry();
         getInjector();
         camelContextExtension.getDefaultFactoryFinder();
-        camelContextExtension.getBootstrapConfigurerResolver();
         getPropertiesComponent();
 
         camelContextExtension.getDataFormatResolver();
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index d2d6d6a21b3..2856c0acd3e 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -43,7 +43,6 @@ import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
-import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.DebuggerFactory;
@@ -338,25 +337,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         return getFactoryFinder(FactoryFinder.DEFAULT_PATH);
     }
 
-    @Override
-    public ConfigurerResolver getBootstrapConfigurerResolver() {
-        if (camelContext.bootstrapConfigurerResolver == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.bootstrapConfigurerResolver == null) {
-                    camelContext.bootstrapConfigurerResolver = new BootstrapConfigurerResolver(
-                            getFactoryFinderResolver().resolveBootstrapFactoryFinder(camelContext.getClassResolver(),
-                                    ConfigurerResolver.RESOURCE_PATH));
-                }
-            }
-        }
-        return camelContext.bootstrapConfigurerResolver;
-    }
-
-    @Override
-    public void setBootstrapConfigurerResolver(ConfigurerResolver configurerResolver) {
-        camelContext.bootstrapConfigurerResolver = configurerResolver;
-    }
-
     @Override
     public FactoryFinder getBootstrapFactoryFinder() {
         if (camelContext.bootstrapFactoryFinder == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultServiceBootstrapCloseable.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultServiceBootstrapCloseable.java
index 11ace4e04d3..ff10d2c453c 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultServiceBootstrapCloseable.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultServiceBootstrapCloseable.java
@@ -27,6 +27,7 @@ import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.ConfigurerStrategy;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.ProcessorFactory;
+import org.apache.camel.support.PluginHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,7 +69,7 @@ public class DefaultServiceBootstrapCloseable implements BootstrapCloseable {
         }
 
         // clear bootstrap configurer resolver
-        ConfigurerResolver cr = camelContextExtension.getBootstrapConfigurerResolver();
+        ConfigurerResolver cr = PluginHelper.getBootstrapConfigurerResolver(camelContextExtension);
         if (cr instanceof BootstrapCloseable) {
             try {
                 ((BootstrapCloseable) cr).close();
@@ -76,7 +77,6 @@ public class DefaultServiceBootstrapCloseable implements BootstrapCloseable {
                 LOG.warn("Error during closing bootstrap service. This exception is ignored", e);
             }
         }
-        camelContextExtension.setBootstrapConfigurerResolver(null);
 
         // clear processor factory
         ProcessorFactory pf = camelContextExtension.getProcessorFactory();
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index e335485b22b..e72e9d31d13 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -29,8 +29,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BasePackageScan": target.setBasePackageScan(property(camelContext, java.lang.String.class, value)); return true;
         case "beanintrospection":
         case "BeanIntrospection": target.setBeanIntrospection(property(camelContext, org.apache.camel.spi.BeanIntrospection.class, value)); return true;
-        case "bootstrapconfigurerresolver":
-        case "BootstrapConfigurerResolver": target.setBootstrapConfigurerResolver(property(camelContext, org.apache.camel.spi.ConfigurerResolver.class, value)); return true;
         case "bootstrapfactoryfinder":
         case "BootstrapFactoryFinder": target.setBootstrapFactoryFinder(property(camelContext, org.apache.camel.spi.FactoryFinder.class, value)); return true;
         case "dataformatresolver":
@@ -114,8 +112,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BasePackageScan": return java.lang.String.class;
         case "beanintrospection":
         case "BeanIntrospection": return org.apache.camel.spi.BeanIntrospection.class;
-        case "bootstrapconfigurerresolver":
-        case "BootstrapConfigurerResolver": return org.apache.camel.spi.ConfigurerResolver.class;
         case "bootstrapfactoryfinder":
         case "BootstrapFactoryFinder": return org.apache.camel.spi.FactoryFinder.class;
         case "dataformatresolver":
@@ -200,8 +196,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BasePackageScan": return target.getBasePackageScan();
         case "beanintrospection":
         case "BeanIntrospection": return target.getBeanIntrospection();
-        case "bootstrapconfigurerresolver":
-        case "BootstrapConfigurerResolver": return target.getBootstrapConfigurerResolver();
         case "bootstrapfactoryfinder":
         case "BootstrapFactoryFinder": return target.getBootstrapFactoryFinder();
         case "dataformatresolver":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 7eb7b2bbd2b..e7083ac83a1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -44,7 +44,6 @@ import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
-import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.DeferServiceFactory;
 import org.apache.camel.spi.EndpointStrategy;
@@ -293,16 +292,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public ConfigurerResolver getBootstrapConfigurerResolver() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBootstrapConfigurerResolver(ConfigurerResolver configurerResolver) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public FactoryFinder getBootstrapFactoryFinder() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainHelper.java b/core/camel-main/src/main/java/org/apache/camel/main/MainHelper.java
index 578419e8ff0..f0e41beee80 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/MainHelper.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/MainHelper.java
@@ -297,8 +297,7 @@ public final class MainHelper {
         if (configurer == null) {
             String name = target.getClass().getName();
             // see if there is a configurer for it (use bootstrap)
-            configurer = context.getCamelContextExtension()
-                    .getBootstrapConfigurerResolver().resolvePropertyConfigurer(name, context);
+            configurer = PluginHelper.getBootstrapConfigurerResolver(context).resolvePropertyConfigurer(name, context);
         }
 
         try {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 8ef62d0efd9..4dd6a259d05 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -151,4 +151,20 @@ public final class PluginHelper {
     public static ScheduledExecutorService getErrorHandlerExecutorService(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(ScheduledExecutorService.class);
     }
+
+    /**
+     * Gets the bootstrap {@link ConfigurerResolver} to use. This bootstrap resolver is only intended to be used during
+     * bootstrap (starting) CamelContext.
+     */
+    public static ConfigurerResolver getBootstrapConfigurerResolver(CamelContext camelContext) {
+        return getBootstrapConfigurerResolver(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the bootstrap {@link ConfigurerResolver} to use. This bootstrap resolver is only intended to be used during
+     * bootstrap (starting) CamelContext.
+     */
+    public static ConfigurerResolver getBootstrapConfigurerResolver(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(ConfigurerResolver.class);
+    }
 }


[camel] 01/02: CAMEL-15105: make the ErrorHandlerExecutorService a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit fa2cc3f2bec9da086ca6fc7e0183e82fa64f42d4
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 31 11:03:13 2023 +0200

    CAMEL-15105: make the ErrorHandlerExecutorService a plugin of the context
---
 .../main/java/org/apache/camel/ExtendedCamelContext.java |  6 ------
 .../apache/camel/impl/engine/AbstractCamelContext.java   |  3 +--
 .../camel/impl/engine/DefaultCamelContextExtension.java  | 14 --------------
 .../org/apache/camel/impl/engine/SimpleCamelContext.java |  2 ++
 .../camel/impl/lw/LightweightCamelContextExtension.java  |  6 ------
 .../processor/errorhandler/RedeliveryErrorHandler.java   |  3 ++-
 .../main/java/org/apache/camel/support/PluginHelper.java | 16 ++++++++++++++++
 7 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index d6082ef3222..7d4b51aebfc 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -19,7 +19,6 @@ package org.apache.camel;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.console.DevConsoleResolver;
@@ -534,11 +533,6 @@ public interface ExtendedCamelContext {
      */
     BeanProcessorFactory getBeanProcessorFactory();
 
-    /**
-     * Gets the default shared thread pool for error handlers which leverages this for asynchronous redelivery tasks.
-     */
-    ScheduledExecutorService getErrorHandlerExecutorService();
-
     /**
      * Adds the given interceptor strategy
      *
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 876f8eb565a..13e0ebdc8d2 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -239,7 +239,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
     volatile ModelJAXBContextFactory modelJAXBContextFactory;
     volatile UnitOfWorkFactory unitOfWorkFactory;
-    volatile ScheduledExecutorService errorHandlerExecutorService;
     volatile BeanIntrospection beanIntrospection;
     volatile boolean eventNotificationApplicable;
     volatile StartupStepRecorder startupStepRecorder = new DefaultStartupStepRecorder();
@@ -2926,10 +2925,10 @@ public abstract class AbstractCamelContext extends BaseService
         // the stop order is important
 
         // shutdown default error handler thread pool
+        final ScheduledExecutorService errorHandlerExecutorService = PluginHelper.getErrorHandlerExecutorService(this);
         if (errorHandlerExecutorService != null) {
             // force shutting down the thread pool
             getExecutorServiceManager().shutdownNow(errorHandlerExecutorService);
-            errorHandlerExecutorService = null;
         }
 
         // shutdown debugger
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index f2505551171..d2d6d6a21b3 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
@@ -307,19 +306,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         this.errorHandlerFactory = errorHandlerFactory;
     }
 
-    @Override
-    public ScheduledExecutorService getErrorHandlerExecutorService() {
-        if (camelContext.errorHandlerExecutorService == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.errorHandlerExecutorService == null) {
-                    // setup default thread pool for error handler
-                    camelContext.errorHandlerExecutorService = camelContext.createErrorHandlerExecutorService();
-                }
-            }
-        }
-        return camelContext.errorHandlerExecutorService;
-    }
-
     @Override
     public UnitOfWorkFactory getUnitOfWorkFactory() {
         if (camelContext.unitOfWorkFactory == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
index 937b2cae356..93bef777bd5 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl.engine;
 
 import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -132,6 +133,7 @@ public class SimpleCamelContext extends AbstractCamelContext {
         super.doBuild();
 
         getCamelContextExtension().addContextPlugin(CliConnectorFactory.class, createCliConnectorFactory());
+        getCamelContextExtension().addContextPlugin(ScheduledExecutorService.class, createErrorHandlerExecutorService());
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index da2443a87a8..7eb7b2bbd2b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -21,7 +21,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
@@ -424,11 +423,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public ScheduledExecutorService getErrorHandlerExecutorService() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public List<InterceptStrategy> getInterceptStrategies() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 05392b9d9ee..2e8eba75bd7 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -54,6 +54,7 @@ import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.EventHelper;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
@@ -1621,7 +1622,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
         if (redeliveryEnabled) {
             if (executorService == null) {
                 // use default shared executor service
-                executorService = camelContext.getCamelContextExtension().getErrorHandlerExecutorService();
+                executorService = PluginHelper.getErrorHandlerExecutorService(camelContext);
             }
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Using ExecutorService: {} for redeliveries on error handler: {}", executorService, this);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 5439f21a401..8ef62d0efd9 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -17,6 +17,8 @@
 
 package org.apache.camel.support;
 
+import java.util.concurrent.ScheduledExecutorService;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.CamelBeanPostProcessor;
@@ -135,4 +137,18 @@ public final class PluginHelper {
     public static UriFactoryResolver getUriFactoryResolver(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(UriFactoryResolver.class);
     }
+
+    /**
+     * Gets the default shared thread pool for error handlers which leverages this for asynchronous redelivery tasks.
+     */
+    public static ScheduledExecutorService getErrorHandlerExecutorService(CamelContext camelContext) {
+        return getErrorHandlerExecutorService(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the default shared thread pool for error handlers which leverages this for asynchronous redelivery tasks.
+     */
+    public static ScheduledExecutorService getErrorHandlerExecutorService(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(ScheduledExecutorService.class);
+    }
 }