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

[camel] branch main updated: CAMEL-19132: Deprecate vm and direct-vm and remove in v4

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 d0b0c9a9482 CAMEL-19132: Deprecate vm and direct-vm and remove in v4
d0b0c9a9482 is described below

commit d0b0c9a9482f402600f1774686e26a7579377d57
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Mar 11 11:38:02 2023 +0100

    CAMEL-19132: Deprecate vm and direct-vm and remove in v4
---
 .../org/apache/camel/catalog/components.properties |   1 -
 .../apache/camel/catalog/components/direct-vm.json |  45 --
 .../org/apache/camel/catalog/others.properties     |   2 -
 .../apache/camel/catalog/others/componentdsl.json  |  15 -
 .../apache/camel/catalog/others/endpointdsl.json   |  15 -
 .../internal/DirectvmSegmentDecorator.java         |  25 -
 components/camel-directvm/pom.xml                  |  43 --
 .../directvm/DirectVmComponentConfigurer.java      |  79 ---
 .../directvm/DirectVmEndpointConfigurer.java       |  91 ----
 .../directvm/DirectVmEndpointUriFactory.java       |  77 ---
 .../services/org/apache/camel/component.properties |   7 -
 .../services/org/apache/camel/component/direct-vm  |   2 -
 .../apache/camel/configurer/direct-vm-component    |   2 -
 .../org/apache/camel/configurer/direct-vm-endpoint |   2 -
 .../org/apache/camel/urifactory/direct-vm-endpoint |   2 -
 .../apache/camel/component/directvm/direct-vm.json |  45 --
 .../src/main/docs/camel-direct-vm.png              | Bin 129236 -> 0 bytes
 .../src/main/docs/direct-vm-component.adoc         | 104 ----
 .../directvm/DirectVmBlockingProducer.java         | 104 ----
 .../component/directvm/DirectVmComponent.java      | 176 -------
 .../camel/component/directvm/DirectVmConsumer.java |  59 ---
 .../directvm/DirectVmConsumerExpression.java       |  55 --
 .../DirectVmConsumerNotAvailableException.java     |  32 --
 .../camel/component/directvm/DirectVmEndpoint.java | 148 ------
 .../component/directvm/DirectVmProcessor.java      | 107 ----
 .../camel/component/directvm/DirectVmProducer.java | 109 ----
 .../apache/camel/component/directvm/package.html   |  32 --
 .../tracing/decorators/DirectvmSpanDecorator.java  |  31 --
 components/pom.xml                                 |   1 -
 .../directvm/AbstractDirectVmTestSupport.java      |  72 ---
 .../DirectVmAdviceWithMockEndpointsTest.java       |  71 ---
 .../directvm/DirectVmConsumerExpressionTest.java   | 126 -----
 .../directvm/DirectVmHeaderFilterStrategyTest.java |  85 ---
 .../component/directvm/DirectVmNoConsumerTest.java | 183 -------
 ...DirectVmNoPropertyPropagationComponentTest.java |  65 ---
 .../DirectVmNoPropertyPropagationTest.java         |  61 ---
 .../directvm/DirectVmProducerBlockingTest.java     | 124 -----
 .../directvm/DirectVmShouldUseSameThreadTest.java  |  70 ---
 .../DirectVmTwoCamelContextAdviceWithTest.java     |  84 ---
 ...rectVmTwoCamelContextDuplicateConsumerTest.java |  93 ----
 .../directvm/DirectVmTwoCamelContextTest.java      |  63 ---
 .../AbstractStubTestSupport.java}                  |   6 +-
 .../camel/component/stub/StubInOnlyTest.java       |   3 +-
 .../apache/camel/component/stub/StubInOutTest.java |   3 +-
 .../component/vm/ConsumerCamelContextAware.java    |  41 --
 .../component/vm/SameVmQueueSizeAndNoSizeTest.java |  90 ----
 .../apache/camel/component/vm/VMSplitterTest.java  |  80 ---
 .../vm/VmComponentReferenceEndpointTest.java       |  93 ----
 .../component/vm/VmConcurrentConsumersTest.java    |  44 --
 ...mDifferentOptionsOnConsumerAndProducerTest.java |  59 ---
 .../component/vm/VmDiscardIfNoConsumerTest.java    |  49 --
 .../camel/component/vm/VmInOnlyChainedTest.java    |  58 ---
 .../apache/camel/component/vm/VmInOnlyTest.java    |  52 --
 .../camel/component/vm/VmInOutChainedTest.java     |  60 ---
 .../component/vm/VmInOutChainedTimeoutTest.java    |  70 ---
 .../org/apache/camel/component/vm/VmInOutTest.java |  55 --
 .../camel/component/vm/VmInOutWithErrorTest.java   |  63 ---
 .../component/vm/VmMultipleConsumersIssueTest.java |  52 --
 .../vm/VmMultipleConsumersKeepRouteTest.java       |  66 ---
 .../vm/VmMultipleConsumersMultipleContextTest.java | 154 ------
 .../vm/VmMultipleConsumersRemoteRouteTest.java     |  74 ---
 .../vm/VmMultipleContextsStartStopTest.java        |  65 ---
 .../org/apache/camel/component/vm/VmQueueTest.java |  55 --
 .../component/vm/VmShouldNotUseSameThreadTest.java |  74 ---
 .../component/vm/VmShouldUseConsumerContext.java   |  58 ---
 .../camel/component/vm/VmTimeoutIssueTest.java     |  81 ---
 .../camel/component/vm/VmUseSameQueueTest.java     |  53 --
 .../component/vm/VmWaitForTaskCompleteTest.java    |  76 ---
 .../vm/VmWaitForTaskIfReplyExpectedTest.java       |  77 ---
 .../camel/component/vm/VmWaitForTaskNewerTest.java |  77 ---
 .../camel/processor/StreamCachingInOutTest.java    |   4 +-
 .../org/apache/camel/main/components.properties    |   1 -
 .../modules/ROOT/examples/json/direct-vm.json      |   1 -
 .../modules/ROOT/images/camel-direct-vm.png        |   1 -
 docs/components/modules/ROOT/nav.adoc              |   1 -
 .../modules/ROOT/pages/direct-vm-component.adoc    |   1 -
 .../ROOT/pages/camel-4-migration-guide.adoc        |   1 +
 .../component/ComponentsBuilderFactory.java        |  14 -
 .../dsl/DirectVmComponentBuilderFactory.java       | 217 --------
 .../src/generated/resources/metadata.json          |  22 -
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 -
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 -
 .../builder/endpoint/StaticEndpointBuilders.java   |  45 --
 .../dsl/DirectVmEndpointBuilderFactory.java        | 568 ---------------------
 .../camel-component-known-dependencies.properties  |   1 -
 85 files changed, 7 insertions(+), 5168 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index fc2cfbbcc6e..eac65774df1 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -75,7 +75,6 @@ debezium-postgres
 debezium-sqlserver
 digitalocean
 direct
-direct-vm
 disruptor
 disruptor-vm
 djl
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/direct-vm.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/direct-vm.json
deleted file mode 100644
index ef58ecc37b8..00000000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/direct-vm.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "direct-vm",
-    "title": "Direct VM",
-    "description": "Call another endpoint from any Camel Context in the same JVM synchronously.",
-    "deprecated": false,
-    "firstVersion": "2.10.0",
-    "label": "core,endpoint",
-    "javaType": "org.apache.camel.component.directvm.DirectVmComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-directvm",
-    "version": "4.0.0-SNAPSHOT",
-    "scheme": "direct-vm",
-    "extendsScheme": "",
-    "syntax": "direct-vm:name",
-    "async": true,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...]
-    "block": { "kind": "property", "displayName": "Block", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active." },
-    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "timeout": { "kind": "property", "displayName": "Timeout", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 30000, "description": "The timeout value to use if block is enabled." },
-    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
-    "headerFilterStrategy": { "kind": "property", "displayName": "Header Filter Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none." },
-    "propagateProperties": { "kind": "property", "displayName": "Propagate Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true." }
-  },
-  "properties": {
-    "name": { "kind": "path", "displayName": "Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of direct-vm endpoint" },
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
-    "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
-    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "block": { "kind": "parameter", "displayName": "Block", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active." },
-    "failIfNoConsumers": { "kind": "parameter", "displayName": "Fail If No Consumers", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should fail by throwing an exception, when sending to a Direct-VM endpoint with no active consumers." },
-    "timeout": { "kind": "parameter", "displayName": "Timeout", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30000", "description": "The timeout value to use if block is enabled." },
-    "headerFilterStrategy": { "kind": "parameter", "displayName": "Header Filter Strategy", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none." },
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
-    "propagateProperties": { "kind": "parameter", "displayName": "Propagate Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true." }
-  }
-}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others.properties
index 1b55e098314..93254bd6ecd 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others.properties
@@ -4,14 +4,12 @@ cli-connector
 cloud
 cloudevents
 cluster
-componentdsl
 console
 csimple-joor
 debug
 dsl-modeline
 dsl-support
 elytron
-endpointdsl
 groovy-dsl
 headersmap
 health
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/componentdsl.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/componentdsl.json
deleted file mode 100644
index 3799e772735..00000000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/componentdsl.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "other": {
-    "kind": "other",
-    "name": "componentdsl",
-    "title": "Java Component DSL",
-    "description": "The Camel Component DSL",
-    "deprecated": false,
-    "firstVersion": "3.1.0",
-    "label": "dsl",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-componentdsl",
-    "version": "4.0.0-SNAPSHOT"
-  }
-}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/endpointdsl.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/endpointdsl.json
deleted file mode 100644
index cea1951ad69..00000000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/endpointdsl.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "other": {
-    "kind": "other",
-    "name": "endpointdsl",
-    "title": "Java Endpoint DSL",
-    "description": "The Camel Endpoint DSL",
-    "deprecated": false,
-    "firstVersion": "3.0.0",
-    "label": "dsl",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-endpointdsl",
-    "version": "4.0.0-SNAPSHOT"
-  }
-}
diff --git a/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/internal/DirectvmSegmentDecorator.java b/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/internal/DirectvmSegmentDecorator.java
deleted file mode 100644
index c2c508598b3..00000000000
--- a/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/internal/DirectvmSegmentDecorator.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.xray.decorators.internal;
-
-public class DirectvmSegmentDecorator extends AbstractInternalSegmentDecorator {
-
-    @Override
-    public String getComponent() {
-        return "direct-vm";
-    }
-}
diff --git a/components/camel-directvm/pom.xml b/components/camel-directvm/pom.xml
deleted file mode 100644
index 3499e838cf7..00000000000
--- a/components/camel-directvm/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-directvm</artifactId>
-    <packaging>jar</packaging>
-
-    <name>Camel :: Direct VM</name>
-    <description>Camel Direct VM component</description>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-
-    </dependencies>
-</project>
diff --git a/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmComponentConfigurer.java b/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmComponentConfigurer.java
deleted file mode 100644
index d911d672f39..00000000000
--- a/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmComponentConfigurer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.directvm;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class DirectVmComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        DirectVmComponent target = (DirectVmComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "block": target.setBlock(property(camelContext, boolean.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "headerfilterstrategy":
-        case "headerFilterStrategy": target.setHeaderFilterStrategy(property(camelContext, org.apache.camel.spi.HeaderFilterStrategy.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "propagateproperties":
-        case "propagateProperties": target.setPropagateProperties(property(camelContext, boolean.class, value)); return true;
-        case "timeout": target.setTimeout(property(camelContext, long.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "block": return boolean.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "headerfilterstrategy":
-        case "headerFilterStrategy": return org.apache.camel.spi.HeaderFilterStrategy.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "propagateproperties":
-        case "propagateProperties": return boolean.class;
-        case "timeout": return long.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        DirectVmComponent target = (DirectVmComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "block": return target.isBlock();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "headerfilterstrategy":
-        case "headerFilterStrategy": return target.getHeaderFilterStrategy();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "propagateproperties":
-        case "propagateProperties": return target.isPropagateProperties();
-        case "timeout": return target.getTimeout();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmEndpointConfigurer.java b/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmEndpointConfigurer.java
deleted file mode 100644
index fe8d05c5f9a..00000000000
--- a/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmEndpointConfigurer.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.directvm;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class DirectVmEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        DirectVmEndpoint target = (DirectVmEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "block": target.setBlock(property(camelContext, boolean.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "exceptionhandler":
-        case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
-        case "exchangepattern":
-        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
-        case "failifnoconsumers":
-        case "failIfNoConsumers": target.setFailIfNoConsumers(property(camelContext, boolean.class, value)); return true;
-        case "headerfilterstrategy":
-        case "headerFilterStrategy": target.setHeaderFilterStrategy(property(camelContext, org.apache.camel.spi.HeaderFilterStrategy.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "propagateproperties":
-        case "propagateProperties": target.setPropagateProperties(property(camelContext, boolean.class, value)); return true;
-        case "timeout": target.setTimeout(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "block": return boolean.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "failifnoconsumers":
-        case "failIfNoConsumers": return boolean.class;
-        case "headerfilterstrategy":
-        case "headerFilterStrategy": return org.apache.camel.spi.HeaderFilterStrategy.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "propagateproperties":
-        case "propagateProperties": return boolean.class;
-        case "timeout": return long.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        DirectVmEndpoint target = (DirectVmEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "block": return target.isBlock();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "failifnoconsumers":
-        case "failIfNoConsumers": return target.isFailIfNoConsumers();
-        case "headerfilterstrategy":
-        case "headerFilterStrategy": return target.getHeaderFilterStrategy();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "propagateproperties":
-        case "propagateProperties": return target.isPropagateProperties();
-        case "timeout": return target.getTimeout();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmEndpointUriFactory.java b/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmEndpointUriFactory.java
deleted file mode 100644
index 9017bb6dd59..00000000000
--- a/components/camel-directvm/src/generated/java/org/apache/camel/component/directvm/DirectVmEndpointUriFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.directvm;
-
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.spi.EndpointUriFactory;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-public class DirectVmEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":name";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    private static final Set<String> MULTI_VALUE_PREFIXES;
-    static {
-        Set<String> props = new HashSet<>(10);
-        props.add("block");
-        props.add("bridgeErrorHandler");
-        props.add("exceptionHandler");
-        props.add("exchangePattern");
-        props.add("failIfNoConsumers");
-        props.add("headerFilterStrategy");
-        props.add("lazyStartProducer");
-        props.add("name");
-        props.add("propagateProperties");
-        props.add("timeout");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
-        MULTI_VALUE_PREFIXES = Collections.emptySet();
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "direct-vm".equals(scheme);
-    }
-
-    @Override
-    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
-        String syntax = scheme + BASE;
-        String uri = syntax;
-
-        Map<String, Object> copy = new HashMap<>(properties);
-
-        uri = buildPathParameter(syntax, uri, "name", null, true, copy);
-        uri = buildQueryParameters(uri, copy, encode);
-        return uri;
-    }
-
-    @Override
-    public Set<String> propertyNames() {
-        return PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> secretPropertyNames() {
-        return SECRET_PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> multiValuePrefixes() {
-        return MULTI_VALUE_PREFIXES;
-    }
-
-    @Override
-    public boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/component.properties
deleted file mode 100644
index 6f956a9376d..00000000000
--- a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/component.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-components=direct-vm
-groupId=org.apache.camel
-artifactId=camel-directvm
-version=4.0.0-SNAPSHOT
-projectName=Camel :: Direct VM
-projectDescription=Camel Direct VM component
diff --git a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/component/direct-vm b/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/component/direct-vm
deleted file mode 100644
index fe8160f1934..00000000000
--- a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/component/direct-vm
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.directvm.DirectVmComponent
diff --git a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/configurer/direct-vm-component b/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/configurer/direct-vm-component
deleted file mode 100644
index 1e07fb2a99c..00000000000
--- a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/configurer/direct-vm-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.directvm.DirectVmComponentConfigurer
diff --git a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/configurer/direct-vm-endpoint b/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/configurer/direct-vm-endpoint
deleted file mode 100644
index 0359e677800..00000000000
--- a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/configurer/direct-vm-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.directvm.DirectVmEndpointConfigurer
diff --git a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/urifactory/direct-vm-endpoint b/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/urifactory/direct-vm-endpoint
deleted file mode 100644
index 1c3aad9e3f0..00000000000
--- a/components/camel-directvm/src/generated/resources/META-INF/services/org/apache/camel/urifactory/direct-vm-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.directvm.DirectVmEndpointUriFactory
diff --git a/components/camel-directvm/src/generated/resources/org/apache/camel/component/directvm/direct-vm.json b/components/camel-directvm/src/generated/resources/org/apache/camel/component/directvm/direct-vm.json
deleted file mode 100644
index ef58ecc37b8..00000000000
--- a/components/camel-directvm/src/generated/resources/org/apache/camel/component/directvm/direct-vm.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "direct-vm",
-    "title": "Direct VM",
-    "description": "Call another endpoint from any Camel Context in the same JVM synchronously.",
-    "deprecated": false,
-    "firstVersion": "2.10.0",
-    "label": "core,endpoint",
-    "javaType": "org.apache.camel.component.directvm.DirectVmComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-directvm",
-    "version": "4.0.0-SNAPSHOT",
-    "scheme": "direct-vm",
-    "extendsScheme": "",
-    "syntax": "direct-vm:name",
-    "async": true,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...]
-    "block": { "kind": "property", "displayName": "Block", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active." },
-    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "timeout": { "kind": "property", "displayName": "Timeout", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 30000, "description": "The timeout value to use if block is enabled." },
-    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
-    "headerFilterStrategy": { "kind": "property", "displayName": "Header Filter Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none." },
-    "propagateProperties": { "kind": "property", "displayName": "Propagate Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true." }
-  },
-  "properties": {
-    "name": { "kind": "path", "displayName": "Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of direct-vm endpoint" },
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...]
-    "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...]
-    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "block": { "kind": "parameter", "displayName": "Block", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active." },
-    "failIfNoConsumers": { "kind": "parameter", "displayName": "Fail If No Consumers", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should fail by throwing an exception, when sending to a Direct-VM endpoint with no active consumers." },
-    "timeout": { "kind": "parameter", "displayName": "Timeout", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30000", "description": "The timeout value to use if block is enabled." },
-    "headerFilterStrategy": { "kind": "parameter", "displayName": "Header Filter Strategy", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none." },
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
-    "propagateProperties": { "kind": "parameter", "displayName": "Propagate Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true." }
-  }
-}
diff --git a/components/camel-directvm/src/main/docs/camel-direct-vm.png b/components/camel-directvm/src/main/docs/camel-direct-vm.png
deleted file mode 100644
index d15f1851223..00000000000
Binary files a/components/camel-directvm/src/main/docs/camel-direct-vm.png and /dev/null differ
diff --git a/components/camel-directvm/src/main/docs/direct-vm-component.adoc b/components/camel-directvm/src/main/docs/direct-vm-component.adoc
deleted file mode 100644
index 75ca6efb504..00000000000
--- a/components/camel-directvm/src/main/docs/direct-vm-component.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-= Direct VM Component
-:doctitle: Direct VM
-:shortname: direct-vm
-:artifactid: camel-directvm
-:description: Call another endpoint from any Camel Context in the same JVM synchronously.
-:since: 2.10
-:supportlevel: Stable
-:component-header: Both producer and consumer are supported
-:core:
-//Manually maintained attributes
-:camel-spring-boot-name: directvm
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The Direct-Vm component provides direct, synchronous invocation of
-any consumers in the JVM when a producer sends a message exchange. +
- This endpoint can be used to connect existing routes in the same camel
-context, as well from other camel contexts in the *same* JVM.
-
-This component differs from the xref:direct-component.adoc[Direct] component in
-that xref:direct-vm-component.adoc[Direct-VM] supports communication across
-CamelContext instances - so you can use this mechanism to communicate
-across web applications (provided that camel-core.jar is on the
-system/boot classpath).
-
-At runtime you can swap in new consumers, by stopping the existing
-consumer(s) and start new consumers. +
- But at any given time there can be at most only one active consumer for
-a given endpoint.
-
-This component allows also to connect routes deployed in different OSGI
-Bundles as you can see here after. Even if they are running in different
-bundles, the camel routes will use +
- the same thread. That autorises to develop applications using
-Transactions - Tx.
-
-image::camel-direct-vm.png[image]
-
-== URI format
-
-----
-direct-vm:someName
-----
-
-Where *someName* can be any string to uniquely identify the endpoint
-
-
-// component-configure options: START
-
-// component-configure options: END
-
-// component options: START
-include::partial$component-configure-options.adoc[]
-include::partial$component-endpoint-options.adoc[]
-// component options: END
-
-// endpoint options: START
-
-// endpoint options: END
-
-
-== Samples
-
-In the route below we use the direct component to link the two routes
-together:
-
-[source,java]
-----
-from("activemq:queue:order.in")
-    .to("bean:orderServer?method=validate")
-    .to("direct-vm:processOrder");
-----
-
-And now in another CamelContext, such as another OSGi bundle
-
-[source,java]
-----
-from("direct-vm:processOrder")
-    .to("bean:orderService?method=process")
-    .to("activemq:queue:order.out");
-----
-
-And the sample using XML DSL:
-
-[source,xml]
-----
-<route>
- <from uri="activemq:queue:order.in"/>
- <to uri="bean:orderService?method=validate"/>
- <to uri="direct-vm:processOrder"/>
-</route>
-
-<route>
- <from uri="direct-vm:processOrder"/>
- <to uri="bean:orderService?method=process"/>
- <to uri="activemq:queue:order.out"/>
-</route>
-----
-
-
-
-include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
deleted file mode 100644
index aea0797a932..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import java.time.Duration;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.support.DefaultAsyncProducer;
-import org.apache.camel.support.task.ForegroundTask;
-import org.apache.camel.support.task.Tasks;
-import org.apache.camel.support.task.budget.Budgets;
-import org.apache.camel.support.task.budget.IterationBoundedBudget;
-import org.apache.camel.util.StopWatch;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The direct producer.
- * <p/>
- * If blocking is enabled ({@code DirectEndpoint#isBlock}) then the DirectEndpoint will create an instance of this class
- * instead of {@code DirectProducer}. This producers {@code process} method will block for the configured duration
- * ({@code DirectEndpoint#getTimeout}, default to 30 seconds). After which if a consumer is still unavailable a
- * DirectConsumerNotAvailableException will be thrown.
- * <p/>
- * Implementation note: Concurrent Producers will block for the duration it takes to determine if a consumer is
- * available, but actual consumer execution will happen concurrently.
- */
-public class DirectVmBlockingProducer extends DefaultAsyncProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DirectVmBlockingProducer.class);
-
-    private final DirectVmEndpoint endpoint;
-
-    public DirectVmBlockingProducer(DirectVmEndpoint endpoint) {
-        super(endpoint);
-        this.endpoint = endpoint;
-    }
-
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        getConsumer(exchange).getProcessor().process(exchange);
-    }
-
-    @Override
-    public boolean process(Exchange exchange, AsyncCallback callback) {
-        try {
-            return getConsumer(exchange).getAsyncProcessor().process(exchange, callback);
-        } catch (Exception e) {
-            exchange.setException(e);
-            callback.done(true);
-            return true;
-        }
-    }
-
-    protected DirectVmConsumer getConsumer(Exchange exchange) throws Exception {
-        DirectVmConsumer answer = endpoint.getConsumer();
-        if (answer == null) {
-            // okay then await until we have a consumer or we timed out
-            if (endpoint.isFailIfNoConsumers()) {
-                throw new DirectVmConsumerNotAvailableException("No consumers available on endpoint: " + endpoint, exchange);
-            } else {
-                answer = awaitConsumer();
-                if (answer == null) {
-                    throw new DirectVmConsumerNotAvailableException(
-                            "No consumers available on endpoint: " + endpoint, exchange);
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    private DirectVmConsumer awaitConsumer() {
-        ForegroundTask task = Tasks.foregroundTask().withBudget(Budgets.iterationTimeBudget()
-                .withMaxIterations(IterationBoundedBudget.UNLIMITED_ITERATIONS)
-                .withMaxDuration(Duration.ofMillis(endpoint.getTimeout()))
-                .withInterval(Duration.ofMillis(500))
-                .build())
-                .build();
-
-        StopWatch watch = new StopWatch();
-        DirectVmConsumer answer = task.run(endpoint::getConsumer, a -> a != null)
-                .orElse(null);
-        LOG.debug("Waited {} for consumer to be ready", watch.taken());
-
-        return answer;
-    }
-
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
deleted file mode 100644
index a5a4e33d0d4..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-
-/**
- * The <a href="http://camel.apache.org/direct-vm.html">Direct VM Component</a> manages {@link DirectVmEndpoint} and
- * holds the list of named direct-vm endpoints.
- */
-@Component("direct-vm")
-public class DirectVmComponent extends DefaultComponent {
-
-    private static final AtomicInteger START_COUNTER = new AtomicInteger();
-
-    // must keep a map of consumers on the component to ensure endpoints can lookup old consumers
-    // later in case the DirectVmEndpoint was re-created due the old was evicted from the endpoints LRUCache
-    // on DefaultCamelContext
-    private static final ConcurrentMap<String, DirectVmConsumer> CONSUMERS = new ConcurrentHashMap<>();
-    @Metadata(label = "producer", defaultValue = "true")
-    private boolean block = true;
-    @Metadata(label = "producer", defaultValue = "30000")
-    private long timeout = 30000L;
-    @Metadata(label = "advanced")
-    private HeaderFilterStrategy headerFilterStrategy;
-    @Metadata(label = "advanced", defaultValue = "true")
-    private boolean propagateProperties = true;
-
-    public DirectVmComponent() {
-    }
-
-    /**
-     * Gets all the consumer endpoints.
-     *
-     * @return consumer endpoints
-     */
-    public static Collection<Endpoint> getConsumerEndpoints() {
-        Collection<Endpoint> endpoints = new ArrayList<>(CONSUMERS.size());
-        for (DirectVmConsumer consumer : CONSUMERS.values()) {
-            endpoints.add(consumer.getEndpoint());
-        }
-        return endpoints;
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        DirectVmEndpoint answer = new DirectVmEndpoint(uri, this);
-        answer.setBlock(block);
-        answer.setTimeout(timeout);
-        answer.setPropagateProperties(propagateProperties);
-        setProperties(answer, parameters);
-        return answer;
-    }
-
-    public DirectVmConsumer getConsumer(DirectVmEndpoint endpoint) {
-        String key = getConsumerKey(endpoint.getEndpointUri());
-        return CONSUMERS.get(key);
-    }
-
-    public void addConsumer(DirectVmEndpoint endpoint, DirectVmConsumer consumer) {
-        String key = getConsumerKey(endpoint.getEndpointUri());
-        DirectVmConsumer existing = CONSUMERS.putIfAbsent(key, consumer);
-        if (existing != null) {
-            String contextId = existing.getEndpoint().getCamelContext().getName();
-            throw new IllegalStateException(
-                    "A consumer " + existing + " already exists from CamelContext: " + contextId
-                                            + ". Multiple consumers not supported");
-        }
-    }
-
-    public void removeConsumer(DirectVmEndpoint endpoint) {
-        String key = getConsumerKey(endpoint.getEndpointUri());
-        CONSUMERS.remove(key);
-    }
-
-    private static String getConsumerKey(String uri) {
-        if (uri.contains("?")) {
-            // strip parameters
-            uri = uri.substring(0, uri.indexOf('?'));
-        }
-        return uri;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        START_COUNTER.incrementAndGet();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        if (START_COUNTER.decrementAndGet() <= 0) {
-            // clear queues when no more direct-vm components in use
-            CONSUMERS.clear();
-        }
-        super.doStop();
-    }
-
-    public boolean isBlock() {
-        return block;
-    }
-
-    /**
-     * If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block
-     * and wait for the consumer to become active.
-     */
-    public void setBlock(boolean block) {
-        this.block = block;
-    }
-
-    public long getTimeout() {
-        return timeout;
-    }
-
-    /**
-     * The timeout value to use if block is enabled.
-     */
-    public void setTimeout(long timeout) {
-        this.timeout = timeout;
-    }
-
-    public HeaderFilterStrategy getHeaderFilterStrategy() {
-        return headerFilterStrategy;
-    }
-
-    /**
-     * Sets a {@link HeaderFilterStrategy} that will only be applied on producer endpoints (on both directions: request
-     * and response).
-     * <p>
-     * Default value: none.
-     * </p>
-     */
-    public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) {
-        this.headerFilterStrategy = headerFilterStrategy;
-    }
-
-    public boolean isPropagateProperties() {
-        return propagateProperties;
-    }
-
-    /**
-     * Whether to propagate or not properties from the producer side to the consumer side, and vice versa.
-     * <p>
-     * Default value: true.
-     * </p>
-     */
-    public void setPropagateProperties(boolean propagateProperties) {
-        this.propagateProperties = propagateProperties;
-    }
-
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java
deleted file mode 100644
index 897e8ae308f..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.Processor;
-import org.apache.camel.Suspendable;
-import org.apache.camel.support.DefaultConsumer;
-
-/**
- * The direct-vm consumer
- */
-public class DirectVmConsumer extends DefaultConsumer implements Suspendable {
-
-    public DirectVmConsumer(DirectVmEndpoint endpoint, Processor processor) {
-        super(endpoint, processor);
-    }
-
-    @Override
-    public DirectVmEndpoint getEndpoint() {
-        return (DirectVmEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        getEndpoint().getComponent().addConsumer(getEndpoint(), this);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        getEndpoint().getComponent().removeConsumer(getEndpoint());
-        super.doStop();
-    }
-
-    @Override
-    protected void doSuspend() throws Exception {
-        getEndpoint().getComponent().removeConsumer(getEndpoint());
-    }
-
-    @Override
-    protected void doResume() throws Exception {
-        getEndpoint().getComponent().addConsumer(getEndpoint(), this);
-    }
-
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerExpression.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerExpression.java
deleted file mode 100644
index ffad8cac865..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerExpression.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.support.ExpressionAdapter;
-import org.apache.camel.util.AntPathMatcher;
-
-/**
- * The expression to select direct-vm consumers based on ant-like path pattern matching.
- */
-public class DirectVmConsumerExpression extends ExpressionAdapter {
-
-    private final AntPathMatcher matcher;
-    private final String pattern;
-
-    public DirectVmConsumerExpression(String pattern) {
-        this.matcher = new AntPathMatcher();
-        this.pattern = pattern;
-    }
-
-    @Override
-    public Object evaluate(Exchange exchange) {
-        Collection<Endpoint> endpoints = new ArrayList<>();
-        for (Endpoint endpoint : DirectVmComponent.getConsumerEndpoints()) {
-            if (matcher.match(pattern, endpoint.getEndpointKey())) {
-                endpoints.add(endpoint);
-            }
-        }
-        return endpoints;
-    }
-
-    @Override
-    public String toString() {
-        return "DirectVmConsumerExpression[" + pattern + "]";
-    }
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java
deleted file mode 100644
index b52a091abbb..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.CamelExchangeException;
-import org.apache.camel.Exchange;
-
-/**
- * Exception thrown when no consumers are available.
- */
-public class DirectVmConsumerNotAvailableException extends CamelExchangeException {
-
-    private static final long serialVersionUID = 1L;
-
-    public DirectVmConsumerNotAvailableException(String message, Exchange exchange) {
-        super(message, exchange);
-    }
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java
deleted file mode 100644
index c85c86a61f9..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.AsyncEndpoint;
-import org.apache.camel.Category;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.DefaultEndpoint;
-
-/**
- * Call another endpoint from any Camel Context in the same JVM synchronously.
- *
- * This endpoint can be used to connect existing routes in the same JVM between different CamelContexts.
- */
-@UriEndpoint(firstVersion = "2.10.0", scheme = "direct-vm", title = "Direct VM", syntax = "direct-vm:name",
-             category = { Category.CORE, Category.ENDPOINT })
-public class DirectVmEndpoint extends DefaultEndpoint implements AsyncEndpoint {
-
-    @UriPath(description = "Name of direct-vm endpoint")
-    @Metadata(required = true)
-    private String name;
-
-    @UriParam(label = "producer", defaultValue = "true")
-    private boolean block = true;
-    @UriParam(label = "producer", defaultValue = "30000", javaType = "java.time.Duration")
-    private long timeout = 30000L;
-    @UriParam(label = "producer")
-    private boolean failIfNoConsumers = true;
-    @UriParam(label = "producer,advanced")
-    private HeaderFilterStrategy headerFilterStrategy;
-    @UriParam(label = "advanced", defaultValue = "true")
-    private boolean propagateProperties = true;
-
-    public DirectVmEndpoint(String endpointUri, DirectVmComponent component) {
-        super(endpointUri, component);
-    }
-
-    @Override
-    public DirectVmComponent getComponent() {
-        return (DirectVmComponent) super.getComponent();
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        if (block) {
-            return new DirectVmBlockingProducer(this);
-        } else {
-            return new DirectVmProducer(this);
-        }
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        Consumer answer = new DirectVmConsumer(this, new DirectVmProcessor(processor, this));
-        configureConsumer(answer);
-        return answer;
-    }
-
-    public DirectVmConsumer getConsumer() {
-        return getComponent().getConsumer(this);
-    }
-
-    public boolean isBlock() {
-        return block;
-    }
-
-    /**
-     * If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block
-     * and wait for the consumer to become active.
-     */
-    public void setBlock(boolean block) {
-        this.block = block;
-    }
-
-    public long getTimeout() {
-        return timeout;
-    }
-
-    /**
-     * The timeout value to use if block is enabled.
-     */
-    public void setTimeout(long timeout) {
-        this.timeout = timeout;
-    }
-
-    public boolean isFailIfNoConsumers() {
-        return failIfNoConsumers;
-    }
-
-    /**
-     * Whether the producer should fail by throwing an exception, when sending to a Direct-VM endpoint with no active
-     * consumers.
-     */
-    public void setFailIfNoConsumers(boolean failIfNoConsumers) {
-        this.failIfNoConsumers = failIfNoConsumers;
-    }
-
-    public HeaderFilterStrategy getHeaderFilterStrategy() {
-        return headerFilterStrategy == null ? getComponent().getHeaderFilterStrategy() : headerFilterStrategy;
-    }
-
-    /**
-     * Sets a {@link HeaderFilterStrategy} that will only be applied on producer endpoints (on both directions: request
-     * and response).
-     * <p>
-     * Default value: none.
-     * </p>
-     */
-    public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) {
-        this.headerFilterStrategy = headerFilterStrategy;
-    }
-
-    public boolean isPropagateProperties() {
-        return propagateProperties;
-    }
-
-    /**
-     * Whether to propagate or not properties from the producer side to the consumer side, and vice versa.
-     * <p>
-     * Default value: true.
-     * </p>
-     */
-    public void setPropagateProperties(boolean propagateProperties) {
-        this.propagateProperties = propagateProperties;
-    }
-
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
deleted file mode 100644
index 765af202daa..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.Processor;
-import org.apache.camel.support.ExchangeHelper;
-import org.apache.camel.support.processor.DelegateAsyncProcessor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class DirectVmProcessor extends DelegateAsyncProcessor {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DirectVmProcessor.class);
-    private final DirectVmEndpoint endpoint;
-
-    public DirectVmProcessor(Processor processor, DirectVmEndpoint endpoint) {
-        super(processor);
-        this.endpoint = endpoint;
-    }
-
-    @Override
-    public boolean process(final Exchange exchange, final AsyncCallback callback) {
-        // need to use a copy of the incoming exchange, so we route using this camel context
-        final Exchange copy = prepareExchange(exchange);
-
-        ClassLoader current = Thread.currentThread().getContextClassLoader();
-        boolean changed = false;
-        try {
-            // set TCCL to application context class loader if given
-            ClassLoader appClassLoader = endpoint.getCamelContext().getApplicationContextClassLoader();
-            if (appClassLoader != null) {
-                LOG.trace("Setting Thread ContextClassLoader to {}", appClassLoader);
-                Thread.currentThread().setContextClassLoader(appClassLoader);
-                changed = true;
-            }
-
-            final boolean chgd = changed;
-            return processor.process(copy, new AsyncCallback() {
-                @Override
-                public void done(boolean done) {
-                    try {
-                        // restore TCCL if it was changed during processing
-                        if (chgd) {
-                            LOG.trace("Restoring Thread ContextClassLoader to {}", current);
-                            Thread.currentThread().setContextClassLoader(current);
-                        }
-                        // make sure to copy results back
-                        ExchangeHelper.copyResults(exchange, copy);
-                    } finally {
-                        // must call callback when we are done
-                        callback.done(done);
-                    }
-                }
-            });
-        } finally {
-            // restore TCCL if it was changed during processing
-            if (changed) {
-                LOG.trace("Restoring Thread ContextClassLoader to {}", current);
-                Thread.currentThread().setContextClassLoader(current);
-            }
-        }
-    }
-
-    /**
-     * Strategy to prepare exchange for being processed by this consumer
-     *
-     * @param  exchange the exchange
-     * @return          the exchange to process by this consumer.
-     */
-    protected Exchange prepareExchange(Exchange exchange) {
-        // send a new copied exchange with new camel context (do not handover completions)
-        Exchange newExchange = ExchangeHelper.copyExchangeAndSetCamelContext(exchange, endpoint.getCamelContext(), false);
-        // set the from endpoint
-        newExchange.getExchangeExtension().setFromEndpoint(endpoint);
-        // The StreamCache created by the child routes must not be
-        // closed by the unit of work of the child route, but by the unit of
-        // work of the parent route or grand parent route or grand grand parent route ...(in case of nesting).
-        // Set therefore the unit of work of the  parent route as stream cache unit of work,
-        // if it is not already set.
-        if (newExchange.getProperty(ExchangePropertyKey.STREAM_CACHE_UNIT_OF_WORK) == null) {
-            newExchange.setProperty(ExchangePropertyKey.STREAM_CACHE_UNIT_OF_WORK, exchange.getUnitOfWork());
-        }
-        return newExchange;
-    }
-
-    @Override
-    public String toString() {
-        return "DirectVm[" + processor + "]";
-    }
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
deleted file mode 100644
index 9b311810247..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.support.DefaultAsyncProducer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The Direct-VM producer.
- */
-public class DirectVmProducer extends DefaultAsyncProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DirectVmProducer.class);
-
-    private DirectVmEndpoint endpoint;
-
-    public DirectVmProducer(DirectVmEndpoint endpoint) {
-        super(endpoint);
-        this.endpoint = endpoint;
-    }
-
-    @Override
-    public boolean process(Exchange exchange, AsyncCallback callback) {
-        // send to consumer
-        DirectVmConsumer consumer = endpoint.getComponent().getConsumer(endpoint);
-
-        if (consumer == null) {
-            if (endpoint.isFailIfNoConsumers()) {
-                exchange.setException(
-                        new DirectVmConsumerNotAvailableException("No consumers available on endpoint: " + endpoint, exchange));
-            } else {
-                LOG.debug("message ignored, no consumers available on endpoint: {}", endpoint);
-            }
-            callback.done(true);
-            return true;
-        }
-
-        try {
-            final HeaderFilterStrategy headerFilterStrategy = endpoint.getHeaderFilterStrategy();
-
-            // Only clone the Exchange if we actually need to filter out properties or headers.
-            final Exchange submitted
-                    = (!endpoint.isPropagateProperties() || headerFilterStrategy != null) ? exchange.copy() : exchange;
-
-            // Clear properties in the copy if we are not propagating them.
-            if (!endpoint.isPropagateProperties()) {
-                submitted.getProperties().clear();
-            }
-
-            // Filter headers by Header Filter Strategy if there is one set.
-            if (headerFilterStrategy != null) {
-                submitted.getIn().getHeaders().entrySet()
-                        .removeIf(e -> headerFilterStrategy.applyFilterToCamelHeaders(e.getKey(), e.getValue(), submitted));
-            }
-
-            return consumer.getAsyncProcessor().process(submitted, done -> {
-                try {
-                    Message msg = submitted.getMessage();
-
-                    if (headerFilterStrategy != null) {
-                        msg.getHeaders().entrySet()
-                                .removeIf(e -> headerFilterStrategy.applyFilterToExternalHeaders(e.getKey(), e.getValue(),
-                                        submitted));
-                    }
-
-                    if (exchange != submitted) {
-                        // only need to copy back if they are different
-                        exchange.setException(submitted.getException());
-                        exchange.getOut().copyFrom(msg);
-                    }
-
-                    if (endpoint.isPropagateProperties()) {
-                        exchange.getProperties().putAll(submitted.getProperties());
-                    }
-                } catch (Exception e) {
-                    exchange.setException(e);
-                } finally {
-                    callback.done(done);
-                }
-            });
-
-        } catch (Exception e) {
-            exchange.setException(e);
-        }
-
-        callback.done(true);
-        return true;
-    }
-
-}
diff --git a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/package.html b/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/package.html
deleted file mode 100644
index 48b3ab43c24..00000000000
--- a/components/camel-directvm/src/main/java/org/apache/camel/component/directvm/package.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<html>
-<head>
-</head>
-<body>
-
-The <a href="http://camel.apache.org/direct-vm.html">Direct VM Component</a> which synchronously invokes
-the consumer when a producer sends an exchange to the endpoint. This also known as <i>strait through processing</i>.
-<p/>
-This component supports messaging within the current JVM; so across CamelContext instances.
-Note that this communication can only take place between ClassLoaders which share the same camel-core.jar.
-So to communicate across web applications you need to put camel-core.jar on the system/boot classpath.
-
-</body>
-</html>
diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/DirectvmSpanDecorator.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/DirectvmSpanDecorator.java
deleted file mode 100644
index f29f03f5106..00000000000
--- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/DirectvmSpanDecorator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.tracing.decorators;
-
-public class DirectvmSpanDecorator extends AbstractInternalSpanDecorator {
-
-    @Override
-    public String getComponent() {
-        return "direct-vm";
-    }
-
-    @Override
-    public String getComponentClassName() {
-        return "org.apache.camel.component.directvm.DirectVmComponent";
-    }
-
-}
diff --git a/components/pom.xml b/components/pom.xml
index c0f39fcd108..8444fc2a2a0 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -42,7 +42,6 @@
         <module>camel-dataformat</module>
         <module>camel-dataset</module>
         <module>camel-direct</module>
-        <module>camel-directvm</module>
         <module>camel-file</module>
         <module>camel-language</module>
         <module>camel-log</module>
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java
deleted file mode 100644
index 5904abfade8..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public abstract class AbstractDirectVmTestSupport extends ContextTestSupport {
-    protected CamelContext context2;
-    protected ProducerTemplate template2;
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        super.setUp();
-
-        doPostSetup();
-
-        context2 = new DefaultCamelContext();
-        context2.start();
-        template2 = context2.createProducerTemplate();
-        template2.start();
-
-        // add routes after CamelContext has been started
-        RouteBuilder routeBuilder = createRouteBuilderForSecondContext();
-        if (routeBuilder != null) {
-            context2.addRoutes(routeBuilder);
-        }
-    }
-
-    protected void doPostSetup() throws Exception {
-        // noop
-    }
-
-    @Override
-    @AfterEach
-    public void tearDown() throws Exception {
-        template2.stop();
-        context2.stop();
-
-        super.tearDown();
-    }
-
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return null;
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmAdviceWithMockEndpointsTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmAdviceWithMockEndpointsTest.java
deleted file mode 100644
index bc2d51070d4..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmAdviceWithMockEndpointsTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-@ResourceLock("DirectVmComponent")
-public class DirectVmAdviceWithMockEndpointsTest extends AbstractDirectVmTestSupport {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    @Test
-    public void testMockEndpoints() throws Exception {
-        context.addRoutes(createRouteBuilder());
-
-        // advice
-        AdviceWith.adviceWith(context.getRouteDefinition("quotes"), context, new AdviceWithRouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                mockEndpoints();
-            }
-        });
-
-        // must start Camel after we are done using advice-with
-        context.start();
-
-        getMockEndpoint("mock:seda:camel").expectedBodiesReceived("Camel rocks");
-        getMockEndpoint("mock:seda:other").expectedBodiesReceived("Bad donkey");
-
-        template.sendBody("direct-vm:quotes", "Camel rocks");
-        template.sendBody("direct-vm:quotes", "Bad donkey");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:quotes").routeId("quotes")
-                        .choice()
-                        .when(simple("${body} contains 'Camel'"))
-                        .to("seda:camel")
-                        .otherwise()
-                        .to("seda:other");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java
deleted file mode 100644
index f907ce5c04d..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public class DirectVmConsumerExpressionTest extends ContextTestSupport {
-
-    private CamelContext context2;
-    private CamelContext context3;
-    private CamelContext context4;
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        super.setUp();
-
-        context2 = new DefaultCamelContext();
-        context3 = new DefaultCamelContext();
-        context4 = new DefaultCamelContext();
-
-        context2.start();
-        context3.start();
-        context4.start();
-
-        // add routes after CamelContext has been started
-        RouteBuilder routeBuilder = createRouteBuilderCamelContext2();
-        context2.addRoutes(routeBuilder);
-
-        routeBuilder = createRouteBuilderCamelContext3();
-        context3.addRoutes(routeBuilder);
-
-        routeBuilder = createRouteBuilderCamelContext4();
-        context4.addRoutes(routeBuilder);
-    }
-
-    @Override
-    @AfterEach
-    public void tearDown() throws Exception {
-        context2.stop();
-        context3.stop();
-        context4.stop();
-        super.tearDown();
-    }
-
-    @Test
-    public void testSelectEndpoint() throws Exception {
-        MockEndpoint result2 = context2.getEndpoint("mock:result2", MockEndpoint.class);
-        result2.expectedBodiesReceived("Hello World");
-
-        MockEndpoint result3 = context3.getEndpoint("mock:result3", MockEndpoint.class);
-        result3.expectedBodiesReceived("Hello World");
-
-        MockEndpoint result4 = context4.getEndpoint("mock:result4", MockEndpoint.class);
-        result4.expectedMessageCount(0);
-
-        template.sendBody("direct:start", "Hello World");
-
-        MockEndpoint.assertIsSatisfied(context2);
-        MockEndpoint.assertIsSatisfied(context3);
-        MockEndpoint.assertIsSatisfied(context4);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").recipientList(new DirectVmConsumerExpression("direct-vm://parent/**/context*"));
-            }
-        };
-    }
-
-    private RouteBuilder createRouteBuilderCamelContext2() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:parent/child/context2").to("mock:result2");
-            }
-        };
-    }
-
-    private RouteBuilder createRouteBuilderCamelContext3() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:parent/child/grandchild/context3").to("mock:result3");
-            }
-        };
-    }
-
-    private RouteBuilder createRouteBuilderCamelContext4() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:parent/child/ctx4").to("mock:result4");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
deleted file mode 100644
index c52c3c220c7..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public class DirectVmHeaderFilterStrategyTest extends ContextTestSupport {
-
-    @Test
-    public void testPropertiesPropagatedOrNot() throws Exception {
-        context.getRegistry().bind("headerFilterStrategy", new HeaderFilterStrategy() {
-            @Override
-            public boolean applyFilterToExternalHeaders(String headerName, Object headerValue, Exchange exchange) {
-                return headerName.equals("Header2");
-            }
-
-            @Override
-            public boolean applyFilterToCamelHeaders(String headerName, Object headerValue, Exchange exchange) {
-                return headerName.equals("Header1");
-            }
-        });
-
-        Exchange response = template.request("direct-vm:start.filter?headerFilterStrategy=#headerFilterStrategy&block=false",
-                exchange -> {
-                    exchange.getIn().setBody("Hello World");
-                    exchange.getIn().setHeader("Header1", "Value1");
-                });
-
-        assertNull(response.getException());
-        assertNull(response.getMessage().getHeader("Header2"));
-
-        response = template.request("direct-vm:start.nofilter", exchange -> {
-            exchange.getIn().setBody("Hello World");
-            exchange.getIn().setHeader("Header1", "Value1");
-        });
-
-        assertNull(response.getException());
-        assertEquals("Value2", response.getMessage().getHeader("Header2", String.class));
-
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                from("direct-vm:start.filter").process(exchange -> {
-                    assertNull(exchange.getIn().getHeader("Header1"));
-                    exchange.getIn().setHeader("Header2", "Value2");
-                });
-
-                from("direct-vm:start.nofilter").process(exchange -> {
-                    assertEquals("Value1", exchange.getIn().getHeader("Header1"));
-                    exchange.getIn().setHeader("Header2", "Value2");
-                });
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoConsumerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoConsumerTest.java
deleted file mode 100644
index 3e50a552e2e..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoConsumerTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.fail;
-
-@ResourceLock("DirectVmComponent")
-public class DirectVmNoConsumerTest extends ContextTestSupport {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    public void testInOnly() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:start").to("direct-vm:foo");
-            }
-        });
-
-        context.start();
-
-        try {
-            template.sendBody("direct-vm:start", "Hello World");
-            fail("Should throw an exception");
-        } catch (CamelExecutionException e) {
-            assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-        }
-    }
-
-    public void testInOut() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:start").to("direct-vm:foo");
-            }
-        });
-
-        context.start();
-
-        try {
-            template.requestBody("direct-vm:start", "Hello World");
-            fail("Should throw an exception");
-        } catch (CamelExecutionException e) {
-            assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-        }
-    }
-
-    @Test
-    public void testFailIfNoConsumerFalse() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:start").to("direct-vm:foo?failIfNoConsumers=false");
-            }
-        });
-
-        context.start();
-
-        try {
-            template.sendBody("direct-vm:start", "Hello World");
-        } catch (CamelExecutionException e) {
-            assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-        }
-    }
-
-    @Test
-    public void testFailIfNoConsumersAfterConsumersLeave() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:foo").routeId("stopThisRoute").to("mock:foo");
-            }
-        });
-
-        context.start();
-
-        getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct-vm:foo", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        context.getRouteController().stopRoute("stopThisRoute");
-        TimeUnit.MILLISECONDS.sleep(100);
-        try {
-            template.sendBody("direct-vm:foo", "Hello World");
-            fail("Should throw an exception");
-        } catch (CamelExecutionException e) {
-            assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-        }
-    }
-
-    @Test
-    public void testFailIfNoConsumersWithValidConsumer() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:in").to("direct-vm:foo");
-                from("direct-vm:foo").to("mock:foo");
-            }
-        });
-
-        context.start();
-
-        getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct-vm:in", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-    }
-
-    @Test
-    public void testFailIfNoConsumersFalseWithPipeline() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:in").to("direct-vm:foo?failIfNoConsumers=false").to("direct-vm:bar");
-                from("direct-vm:bar").to("mock:foo");
-            }
-        });
-
-        context.start();
-
-        getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct-vm:in", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
-    public void testConfigOnAConsumer() throws Exception {
-        context.getComponent("direct-vm", DirectVmComponent.class).setBlock(false);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:foo?failIfNoConsumers=false").to("log:test");
-            }
-        });
-
-        context.start();
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoPropertyPropagationComponentTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoPropertyPropagationComponentTest.java
deleted file mode 100644
index fb8c5e5b87b..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoPropertyPropagationComponentTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public class DirectVmNoPropertyPropagationComponentTest extends ContextTestSupport {
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = super.createCamelContext();
-
-        DirectVmComponent directvm = new DirectVmComponent();
-        directvm.setPropagateProperties(false);
-        directvm.setBlock(false);
-        context.addComponent("direct-vm", directvm);
-
-        return context;
-    }
-
-    @Test
-    public void testPropertiesPropagatedOrNot() throws Exception {
-
-        template.sendBody("direct-vm:start.default", "Hello World");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                // Starters.
-                from("direct-vm:start.default").setProperty("abc", constant("def")).to("direct-vm:foo.noprops");
-
-                // Asserters.
-                from("direct-vm:foo.noprops").process(exchange -> assertNull(exchange.getProperty("abc")));
-
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoPropertyPropagationTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoPropertyPropagationTest.java
deleted file mode 100644
index 56cc862d7d2..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmNoPropertyPropagationTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public class DirectVmNoPropertyPropagationTest extends ContextTestSupport {
-
-    @Test
-    public void testPropertiesPropagatedOrNot() throws Exception {
-        template.sendBody("direct-vm:start.noprops", "Hello World");
-        template.sendBody("direct-vm:start.props", "Hello World");
-        template.sendBody("direct-vm:start.default", "Hello World");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                // Starters.
-                from("direct-vm:start.noprops").setProperty("abc", constant("def"))
-                        .to("direct-vm:foo.noprops?propagateProperties=false&block=false");
-
-                from("direct-vm:start.props").setProperty("abc", constant("def"))
-                        .to("direct-vm:foo.props?propagateProperties=true");
-
-                from("direct-vm:start.default").setProperty("abc", constant("def")).to("direct-vm:foo.props");
-
-                // Asserters.
-                from("direct-vm:foo.noprops").process(exchange -> assertNull(exchange.getProperty("abc")));
-
-                from("direct-vm:foo.props").process(exchange -> assertEquals("def", exchange.getProperty("abc", String.class)));
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmProducerBlockingTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmProducerBlockingTest.java
deleted file mode 100644
index fa82c276065..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmProducerBlockingTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.apache.camel.CamelExchangeException;
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.util.StopWatch;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Timeout;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-@Timeout(20)
-@ResourceLock("DirectVmComponent")
-public class DirectVmProducerBlockingTest extends ContextTestSupport {
-
-    @Test
-    public void testProducerBlocksForSuspendedConsumer() throws Exception {
-        DirectVmEndpoint endpoint = getMandatoryEndpoint("direct-vm:suspended", DirectVmEndpoint.class);
-        endpoint.getConsumer().suspend();
-
-        StopWatch watch = new StopWatch();
-        try {
-            template.sendBody("direct-vm:suspended?block=true&timeout=500&failIfNoConsumers=false", "hello world");
-            fail("Expected CamelExecutionException");
-        } catch (CamelExecutionException e) {
-            DirectVmConsumerNotAvailableException cause
-                    = assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-            assertIsInstanceOf(CamelExchangeException.class, cause);
-            assertTrue(watch.taken() > 490);
-        }
-    }
-
-    @Test
-    public void testProducerBlocksWithNoConsumers() throws Exception {
-        DirectVmEndpoint endpoint = getMandatoryEndpoint("direct-vm:suspended", DirectVmEndpoint.class);
-        endpoint.getConsumer().suspend();
-
-        StopWatch watch = new StopWatch();
-        try {
-            template.sendBody("direct-vm:start?block=true&timeout=500&failIfNoConsumers=false", "hello world");
-            fail("Expected CamelExecutionException");
-        } catch (CamelExecutionException e) {
-            DirectVmConsumerNotAvailableException cause
-                    = assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-            assertIsInstanceOf(CamelExchangeException.class, cause);
-
-            assertTrue(watch.taken() > 490);
-        }
-    }
-
-    @Test
-    public void testProducerBlocksFailIfNoConsumerFalse() throws Exception {
-        DirectVmEndpoint endpoint = getMandatoryEndpoint("direct-vm:suspended", DirectVmEndpoint.class);
-        endpoint.getConsumer().suspend();
-
-        try {
-            template.sendBody("direct-vm:start?block=true&timeout=500&failIfNoConsumers=true", "hello world");
-            fail("Expected CamelExecutionException");
-        } catch (CamelExecutionException e) {
-            DirectVmConsumerNotAvailableException cause
-                    = assertIsInstanceOf(DirectVmConsumerNotAvailableException.class, e.getCause());
-            assertIsInstanceOf(CamelExchangeException.class, cause);
-        }
-    }
-
-    @Test
-    public void testProducerBlocksResumeTest() throws Exception {
-        context.getRouteController().suspendRoute("foo");
-
-        ExecutorService executor = Executors.newSingleThreadExecutor();
-        executor.submit(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    Thread.sleep(200);
-                    log.info("Resuming consumer");
-                    context.getRouteController().resumeRoute("foo");
-                } catch (Exception e) {
-                    // ignore
-                }
-            }
-        });
-
-        getMockEndpoint("mock:result").expectedMessageCount(1);
-
-        template.sendBody("direct-vm:suspended?block=true&timeout=1000&failIfNoConsumers=false", "hello world");
-
-        assertMockEndpointsSatisfied();
-
-        executor.shutdownNow();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                from("direct-vm:suspended").routeId("foo").to("mock:result");
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmShouldUseSameThreadTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmShouldUseSameThreadTest.java
deleted file mode 100644
index 2ab298b4f41..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmShouldUseSameThreadTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public class DirectVmShouldUseSameThreadTest extends ContextTestSupport {
-
-    private static long id;
-
-    @Test
-    public void testUseSameThread() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct-vm:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                final ThreadLocal<String> local = new ThreadLocal<>();
-
-                from("direct-vm:start").process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        local.set("Hello");
-                        id = Thread.currentThread().getId();
-                    }
-                }).to("direct-vm:foo");
-
-                from("direct-vm:foo").process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        assertEquals("Hello", local.get());
-                        assertEquals(id, Thread.currentThread().getId());
-                    }
-                }).to("mock:result");
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextAdviceWithTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextAdviceWithTest.java
deleted file mode 100644
index f795b325e31..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextAdviceWithTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-/**
- *
- */
-@ResourceLock("DirectVmComponent")
-public class DirectVmTwoCamelContextAdviceWithTest extends AbstractDirectVmTestSupport {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:step-1a").routeId("step-1a").log("Before Step-1a ${body}").to("direct-vm:step-2a")
-                        .log("After Step-1a ${body}");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:step-2a").routeId("step-2a").log("Before Step-2a ${body}").setBody(constant("Bye"))
-                        .log("After Step-2a ${body}");
-            }
-        };
-    }
-
-    @Test
-    public void testTwoCamelContext() throws Exception {
-        // add route
-        context.addRoutes(createRouteBuilder());
-
-        // advice
-        AdviceWith.adviceWith(context.getRouteDefinition("step-1a"), context, new AdviceWithRouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                weaveAddLast().to("mock:results");
-            }
-        });
-
-        // start camel
-        context.start();
-        context2.start();
-
-        MockEndpoint endpoint = getMockEndpoint("mock:results");
-        endpoint.expectedBodiesReceived("Bye");
-
-        template.sendBody("direct:step-1a", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextDuplicateConsumerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextDuplicateConsumerTest.java
deleted file mode 100644
index a01fd13c5ee..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextDuplicateConsumerTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-/**
- *
- */
-public class DirectVmTwoCamelContextDuplicateConsumerTest extends AbstractDirectVmTestSupport {
-
-    @Test
-    public void testThirdClash() throws Exception {
-        CamelContext third = new DefaultCamelContext();
-        third.addRoutes(createRouteBuilderForThirdContext());
-        try {
-            third.start();
-            fail("Should have thrown exception");
-        } catch (Exception e) {
-            assertTrue(e.getMessage().matches(
-                    "A consumer Consumer\\[direct-vm://foo\\] already exists from CamelContext: camel-[0-9]+. Multiple consumers not supported"));
-        }
-
-        // stop first camel context then
-        context.stop();
-
-        // and start the 3rd which should work now
-        third.start();
-
-        MockEndpoint mock = third.getEndpoint("mock:third", MockEndpoint.class);
-        mock.expectedMessageCount(1);
-
-        template2.sendBody("direct:start", "Hello World");
-
-        mock.assertIsSatisfied();
-
-        third.stop();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:foo").transform(constant("Bye World"))
-                        .log("Running on Camel ${camelId} on thread ${threadName} with message ${body}").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").log("Running on Camel ${camelId} on thread ${threadName} with message ${body}")
-                        .to("direct-vm:foo");
-            }
-        };
-    }
-
-    protected RouteBuilder createRouteBuilderForThirdContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:foo").transform(constant("Bye World"))
-                        .log("Running on Camel ${camelId} on thread ${threadName} with message ${body}").to("mock:third");
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextTest.java
deleted file mode 100644
index d3e75a62a55..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmTwoCamelContextTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.directvm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- *
- */
-public class DirectVmTwoCamelContextTest extends AbstractDirectVmTestSupport {
-
-    @Test
-    public void testTwoCamelContext() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-        getMockEndpoint("mock:result").expectedHeaderReceived("name1", context.getName());
-        getMockEndpoint("mock:result").expectedHeaderReceived("name2", context2.getName());
-
-        String out = template2.requestBody("direct:start", "Hello World", String.class);
-        assertEquals("Bye World", out);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct-vm:foo").transform(constant("Bye World")).setHeader("name1", simple("${camelId}"))
-                        .log("Running on Camel ${camelId} on thread ${threadName} with message ${body}").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").setHeader("name2", simple("${camelId}"))
-                        .log("Running on Camel ${camelId} on thread ${threadName} with message ${body}").to("direct-vm:foo");
-            }
-        };
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java b/core/camel-core/src/test/java/org/apache/camel/component/stub/AbstractStubTestSupport.java
similarity index 93%
rename from core/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
rename to core/camel-core/src/test/java/org/apache/camel/component/stub/AbstractStubTestSupport.java
index 0df006987be..c49bcd7d43e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/stub/AbstractStubTestSupport.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.component.vm;
+package org.apache.camel.component.stub;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.parallel.ResourceLock;
 
 @ResourceLock("VmComponent")
-public abstract class AbstractVmTestSupport extends ContextTestSupport {
+public abstract class AbstractStubTestSupport extends ContextTestSupport {
 
     protected CamelContext context2;
     protected ProducerTemplate template2;
@@ -52,8 +52,6 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
     @AfterEach
     public void tearDown() throws Exception {
         stopServices(context2, template2);
-        VmComponent.ENDPOINTS.clear();
-        VmComponent.QUEUES.clear();
         super.tearDown();
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOnlyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOnlyTest.java
index 0f1d268dc31..8ef5ecfb59d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOnlyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOnlyTest.java
@@ -17,12 +17,11 @@
 package org.apache.camel.component.stub;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.vm.AbstractVmTestSupport;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.parallel.ResourceLock;
 
 @ResourceLock("VmComponent")
-public class StubInOnlyTest extends AbstractVmTestSupport {
+public class StubInOnlyTest extends AbstractStubTestSupport {
 
     @Test
     public void testInOnly() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOutTest.java b/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOutTest.java
index 65b62047e02..8695bee98ab 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOutTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/stub/StubInOutTest.java
@@ -17,12 +17,11 @@
 package org.apache.camel.component.stub;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.vm.AbstractVmTestSupport;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.parallel.ResourceLock;
 
 @ResourceLock("VmComponent")
-public class StubInOutTest extends AbstractVmTestSupport {
+public class StubInOutTest extends AbstractStubTestSupport {
 
     @Test
     public void testInOut() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/ConsumerCamelContextAware.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/ConsumerCamelContextAware.java
deleted file mode 100644
index 06ddcc8f12f..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/ConsumerCamelContextAware.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.ContextTestSupport;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-@ResourceLock("VmComponent")
-public class ConsumerCamelContextAware extends ContextTestSupport {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    public void testConsumerCamelContextAware() throws Exception {
-        Consumer consumer = context.getEndpoint("vm:foo").createConsumer(null);
-        assertNotNull(consumer);
-
-        VmConsumer vm = assertIsInstanceOf(VmConsumer.class, consumer);
-        assertEquals(vm.getCamelContext(), context);
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/SameVmQueueSizeAndNoSizeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/SameVmQueueSizeAndNoSizeTest.java
deleted file mode 100644
index 3d402916847..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/SameVmQueueSizeAndNoSizeTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ResolveEndpointFailedException;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.seda.SedaConstants;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
-/**
- *
- */
-@ResourceLock("VmComponent")
-public class SameVmQueueSizeAndNoSizeTest extends ContextTestSupport {
-
-    @Test
-    public void testSameQueue() throws Exception {
-        for (int i = 0; i < 100; i++) {
-            template.sendBody("vm:foo", "" + i);
-        }
-
-        try {
-            template.sendBody("vm:foo", "Should be full now");
-            fail("Should fail");
-        } catch (CamelExecutionException e) {
-            IllegalStateException ise = assertIsInstanceOf(IllegalStateException.class, e.getCause());
-            if (!isJavaVendor("ibm")) {
-                assertEquals("Queue full", ise.getMessage());
-            }
-        }
-    }
-
-    @Test
-    public void testSameQueueDifferentSize() throws Exception {
-        try {
-            template.sendBody("vm:foo?size=200", "Should fail");
-            fail("Should fail");
-        } catch (ResolveEndpointFailedException e) {
-            IllegalArgumentException ise = assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
-            assertEquals(
-                    "Cannot use existing queue vm://foo as the existing queue size 100 does not match given queue size 200",
-                    ise.getMessage());
-        }
-    }
-
-    @Test
-    public void testSameQueueDifferentSizeBar() throws Exception {
-        try {
-            template.sendBody("vm:bar?size=200", "Should fail");
-            fail("Should fail");
-        } catch (ResolveEndpointFailedException e) {
-            IllegalArgumentException ise = assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
-            assertEquals("Cannot use existing queue vm://bar as the existing queue size " + SedaConstants.QUEUE_SIZE
-                         + " does not match given queue size 200",
-                    ise.getMessage());
-        }
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?size=100").routeId("foo").noAutoStartup().to("mock:foo");
-
-                from("vm:bar").routeId("bar").noAutoStartup().to("mock:bar");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java
deleted file mode 100644
index 39c18cca092..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spi.Registry;
-import org.junit.jupiter.api.Test;
-
-public class VMSplitterTest extends AbstractVmTestSupport {
-
-    @Override
-    protected Registry createRegistry() throws Exception {
-        Registry jndi = super.createRegistry();
-        jndi.bind("splitterBean", new SplitWordsBean());
-        return jndi;
-    }
-
-    @Test
-    public void testSplitUsingMethodCall() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedBodiesReceived("Claus", "James", "Willem");
-
-        template2.sendBody("direct:start", "Claus@James@Willem");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:server").split().method("splitterBean", "splitWords").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:server");
-            }
-        };
-    }
-
-    public static final class SplitWordsBean {
-        private SplitWordsBean() {
-            // Helper Class
-        }
-
-        public static List<String> splitWords(String body) {
-            // here we split the payload using java code
-            // we have the true power of Java to do the splitting
-            // as we like. As this is based on a unit test we just do it easy
-            return Arrays.asList(body.split("@"));
-        }
-
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmComponentReferenceEndpointTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmComponentReferenceEndpointTest.java
deleted file mode 100644
index 740b15f4d7f..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmComponentReferenceEndpointTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import java.util.Iterator;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.seda.QueueReference;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- *
- */
-public class VmComponentReferenceEndpointTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testVmComponentReference() throws Exception {
-        VmComponent vm = context.getComponent("vm", VmComponent.class);
-
-        String key = vm.getQueueKey("vm://foo");
-        assertEquals(1, vm.getQueues().get(key).getCount());
-        assertEquals(2, numberOfReferences(vm));
-
-        // add a second consumer on the endpoint
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?blockWhenFull=true").routeId("foo2").to("mock:foo2");
-            }
-        });
-
-        assertEquals(2, vm.getQueues().get(key).getCount());
-        assertEquals(3, numberOfReferences(vm));
-
-        // remove the 1st route
-        context.getRouteController().stopRoute("foo");
-        context.removeRoute("foo");
-
-        assertEquals(1, vm.getQueues().get(key).getCount());
-        assertEquals(2, numberOfReferences(vm));
-
-        // remove the 2nd route
-        context.getRouteController().stopRoute("foo2");
-        context.removeRoute("foo2");
-
-        // and there is no longer queues for the foo key
-        assertNull(vm.getQueues().get(key));
-
-        // there should still be a bar
-        assertEquals(1, numberOfReferences(vm));
-        key = vm.getQueueKey("vm://bar");
-        assertEquals(1, vm.getQueues().get(key).getCount());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo").routeId("foo").to("mock:foo");
-
-                from("vm:bar").routeId("bar").to("mock:bar");
-            }
-        };
-    }
-
-    private int numberOfReferences(VmComponent vm) {
-        int num = 0;
-        Iterator<QueueReference> it = vm.getQueues().values().iterator();
-        while (it.hasNext()) {
-            num += it.next().getCount();
-        }
-        return num;
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmConcurrentConsumersTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmConcurrentConsumersTest.java
deleted file mode 100644
index ebbbc2e755b..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmConcurrentConsumersTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-public class VmConcurrentConsumersTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testSendToSeda() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("Hello World");
-
-        template2.sendBody("vm:foo?concurrentConsumers=5", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?concurrentConsumers=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmDifferentOptionsOnConsumerAndProducerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmDifferentOptionsOnConsumerAndProducerTest.java
deleted file mode 100644
index 57fae22fe4b..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmDifferentOptionsOnConsumerAndProducerTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class VmDifferentOptionsOnConsumerAndProducerTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testSendToVm() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Hello World");
-
-        template2.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        // check the camel context of the exchange
-        assertEquals(context, result.getExchanges().get(0).getContext(), "Get a wrong context. ");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?concurrentConsumers=5").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmDiscardIfNoConsumerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmDiscardIfNoConsumerTest.java
deleted file mode 100644
index 8da78c404a9..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmDiscardIfNoConsumerTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class VmDiscardIfNoConsumerTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testDiscard() throws Exception {
-        VmEndpoint bar = getMandatoryEndpoint("vm:bar", VmEndpoint.class);
-        assertEquals(0, bar.getCurrentQueueSize());
-
-        getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        assertEquals(0, bar.getCurrentQueueSize());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:bar?discardIfNoConsumers=true").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOnlyChainedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOnlyChainedTest.java
deleted file mode 100644
index a511ccaf14a..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOnlyChainedTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-public class VmInOnlyChainedTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOnlyVmChained() throws Exception {
-        getMockEndpoint("mock:a").expectedBodiesReceived("start");
-        resolveMandatoryEndpoint(context2, "mock:b", MockEndpoint.class).expectedBodiesReceived("start-a");
-        getMockEndpoint("mock:c").expectedBodiesReceived("start-a-b");
-
-        template.sendBody("vm:a", "start");
-
-        assertMockEndpointsSatisfied();
-        MockEndpoint.assertIsSatisfied(context2);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:a").to("mock:a").setBody(simple("${body}-a")).to("vm:b");
-
-                from("vm:c").to("mock:c").setBody(simple("${body}-c"));
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:b").to("mock:b").setBody(simple("${body}-b")).to("vm:c");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOnlyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOnlyTest.java
deleted file mode 100644
index de9d954479e..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOnlyTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-public class VmInOnlyTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOnly() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
-        template2.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutChainedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutChainedTest.java
deleted file mode 100644
index f3ce3af9f1b..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutChainedTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class VmInOutChainedTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOutVmChained() throws Exception {
-        getMockEndpoint("mock:a").expectedBodiesReceived("start");
-        resolveMandatoryEndpoint(context2, "mock:b", MockEndpoint.class).expectedBodiesReceived("start-a");
-        getMockEndpoint("mock:c").expectedBodiesReceived("start-a-b");
-
-        String reply = template2.requestBody("vm:a", "start", String.class);
-        assertEquals("start-a-b-c", reply);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:a").to("mock:a").transform(simple("${body}-a")).to("vm:b");
-
-                from("vm:c").to("mock:c").transform(simple("${body}-c"));
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:b").to("mock:b").transform(simple("${body}-b")).to("vm:c");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutChainedTimeoutTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutChainedTimeoutTest.java
deleted file mode 100644
index 353933b90f0..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutChainedTimeoutTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ExchangeTimedOutException;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.util.StopWatch;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-public class VmInOutChainedTimeoutTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testVmInOutChainedTimeout() throws Exception {
-        StopWatch watch = new StopWatch();
-
-        try {
-            template2.requestBody("vm:a?timeout=1000", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (CamelExecutionException e) {
-            // the chained vm caused the timeout
-            ExchangeTimedOutException cause = assertIsInstanceOf(ExchangeTimedOutException.class, e.getCause());
-            assertEquals(200, cause.getTimeout());
-        }
-
-        long delta = watch.taken();
-
-        assertTrue(delta < 1100, "Should be faster than 1 sec, was: " + delta);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:b").to("mock:b").delay(500).transform().constant("Bye World");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                errorHandler(noErrorHandler());
-
-                from("vm:a").to("mock:a")
-                        // this timeout will trigger an exception to occur
-                        .to("vm:b?timeout=200").to("mock:a2");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutTest.java
deleted file mode 100644
index 6fae583053c..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class VmInOutTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOut() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        String out = template2.requestBody("direct:start", "Hello World", String.class);
-        assertEquals("Bye World", out);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo").transform(constant("Bye World")).to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutWithErrorTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutWithErrorTest.java
deleted file mode 100644
index 978bd2b904b..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmInOutWithErrorTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
-public class VmInOutWithErrorTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOutWithError() throws Exception {
-        getMockEndpoint("mock:result").expectedMessageCount(0);
-
-        try {
-            template2.requestBody("direct:start", "Hello World", String.class);
-            fail("Should have thrown an exception");
-        } catch (CamelExecutionException e) {
-            assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
-            assertEquals("Damn I cannot do this", e.getCause().getMessage());
-        }
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo").transform(constant("Bye World"))
-                        .throwException(new IllegalArgumentException("Damn I cannot do this")).to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersIssueTest.java
deleted file mode 100644
index 45bb23708c8..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersIssueTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-/**
- *
- */
-public class VmMultipleConsumersIssueTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testVmMultipleConsumersIssue() throws Exception {
-        getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
-        getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
-        getMockEndpoint("mock:done").expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct:inbox", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:inbox").to(ExchangePattern.InOut, "vm:foo?timeout=5000").to("mock:done");
-
-                from("vm:foo?multipleConsumers=true").to("log:a").to("mock:a");
-
-                from("vm:foo?multipleConsumers=true").to("log:b").to("mock:b");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersKeepRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersKeepRouteTest.java
deleted file mode 100644
index 27ee814dd0e..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersKeepRouteTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-@ResourceLock("VmComponent")
-public class VmMultipleConsumersKeepRouteTest {
-
-    @Test
-    public void testVmMultipleConsumersKeepRoute() throws Exception {
-        CamelContext camelContext = new DefaultCamelContext();
-        ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
-
-        RouteBuilder builder = new RouteBuilder(camelContext) {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
-            }
-
-        };
-        RouteBuilder builder2 = new RouteBuilder(camelContext) {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
-            }
-        };
-        camelContext.addRoutes(builder);
-        camelContext.addRoutes(builder2);
-
-        camelContext.start();
-
-        MockEndpoint mock1 = (MockEndpoint) camelContext.getEndpoint("mock:route1");
-        MockEndpoint mock2 = (MockEndpoint) camelContext.getEndpoint("mock:route2");
-        mock1.expectedMessageCount(100);
-        mock2.expectedMessageCount(100);
-
-        for (int i = 0; i < 100; i++) {
-            producerTemplate.sendBody("vm:producer?multipleConsumers=true", i);
-        }
-
-        MockEndpoint.assertIsSatisfied(mock1, mock2);
-
-        camelContext.stop();
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
deleted file mode 100644
index 42fb02e75e6..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.Test;
-
-public class VmMultipleConsumersMultipleContextTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testMultipleVMConsumersSameContext() throws Exception {
-        CamelContext camelContext = new DefaultCamelContext();
-        ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
-
-        RouteBuilder builder = new RouteBuilder(camelContext) {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
-            }
-
-        };
-        RouteBuilder builder2 = new RouteBuilder(camelContext) {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
-            }
-        };
-        camelContext.addRoutes(builder);
-        camelContext.addRoutes(builder2);
-
-        camelContext.start();
-
-        MockEndpoint mock1 = (MockEndpoint) camelContext.getEndpoint("mock:route1");
-        MockEndpoint mock2 = (MockEndpoint) camelContext.getEndpoint("mock:route2");
-        mock1.expectedMessageCount(100);
-        mock2.expectedMessageCount(100);
-
-        for (int i = 0; i < 100; i++) {
-            producerTemplate.sendBody("vm:producer?multipleConsumers=true", i);
-        }
-
-        MockEndpoint.assertIsSatisfied(mock1, mock2);
-
-        camelContext.stop();
-    }
-
-    @Test
-    public void testVmMultipleConsumersMultipleContext() throws Exception {
-
-        // start context 1
-        CamelContext consumerContext1 = new DefaultCamelContext();
-        consumerContext1.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
-            }
-        });
-        consumerContext1.start();
-        MockEndpoint route1Mock = (MockEndpoint) consumerContext1.getEndpoint("mock:route1");
-        route1Mock.expectedMessageCount(100);
-
-        // start up context 2
-        CamelContext consumerContext2 = new DefaultCamelContext();
-        consumerContext2.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
-            }
-        });
-        consumerContext2.start();
-        MockEndpoint route2Mock = (MockEndpoint) consumerContext2.getEndpoint("mock:route2");
-        route2Mock.expectedMessageCount(100);
-
-        // use context part of contextTestSupport to send in messages
-        for (int i = 0; i < 100; i++) {
-            template.sendBody("vm:producer?multipleConsumers=true", i);
-        }
-
-        route1Mock.assertIsSatisfied();
-        route2Mock.assertIsSatisfied();
-
-        consumerContext1.stop();
-        consumerContext2.stop();
-    }
-
-    private CamelContext buildConsumerContext(final String route) throws Exception {
-        DefaultCamelContext rc = new DefaultCamelContext();
-        rc.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId(route).to("mock:" + route);
-            }
-        });
-        rc.start();
-        return rc;
-    }
-
-    @Test
-    public void testVmMultipleConsumersDifferentEndpoints() throws Exception {
-        // start context 1
-        CamelContext consumerContext1 = new DefaultCamelContext();
-        consumerContext1.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
-            }
-        });
-        consumerContext1.start();
-        MockEndpoint route1Mock = (MockEndpoint) consumerContext1.getEndpoint("mock:route1");
-        route1Mock.expectedMessageCount(100);
-
-        // start up context 2
-        CamelContext consumerContext2 = new DefaultCamelContext();
-        consumerContext2.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?multipleConsumers=true").routeId("route2").to("mock:route2");
-            }
-        });
-        consumerContext2.start();
-        MockEndpoint route2Mock = (MockEndpoint) consumerContext2.getEndpoint("mock:route2");
-        route2Mock.expectedMessageCount(0);
-
-        // use context part of contextTestSupport to send in messages
-        for (int i = 0; i < 100; i++) {
-            template.sendBody("vm:producer?multipleConsumers=true", i);
-        }
-
-        route1Mock.assertIsSatisfied();
-        route2Mock.assertIsSatisfied();
-
-        consumerContext1.stop();
-        consumerContext2.stop();
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
deleted file mode 100644
index 57f3c0565e0..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.parallel.ResourceLock;
-
-@ResourceLock("VmComponent")
-public class VmMultipleConsumersRemoteRouteTest {
-
-    @Test
-    public void testVmMultipleConsumersRemoteRoute() throws Exception {
-        CamelContext camelContext = new DefaultCamelContext();
-        ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
-
-        RouteBuilder builder = new RouteBuilder(camelContext) {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
-            }
-
-        };
-        RouteBuilder builder2 = new RouteBuilder(camelContext) {
-            @Override
-            public void configure() throws Exception {
-                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
-            }
-        };
-        camelContext.addRoutes(builder);
-        camelContext.addRoutes(builder2);
-
-        camelContext.start();
-
-        // this test actually removes the route... so in effect we have one
-        // route consuming
-        // a "multipleConsumer" seda queue
-        camelContext.getRouteController().stopRoute("route2");
-        camelContext.removeRoute("route2");
-
-        MockEndpoint mock1 = (MockEndpoint) camelContext.getEndpoint("mock:route1");
-        MockEndpoint mock2 = (MockEndpoint) camelContext.getEndpoint("mock:route2");
-        mock1.expectedMessageCount(100);
-        mock2.expectedMessageCount(0);
-
-        for (int i = 0; i < 100; i++) {
-            producerTemplate.sendBody("vm:producer?multipleConsumers=true", i);
-        }
-
-        MockEndpoint.assertIsSatisfied(20, TimeUnit.SECONDS, mock1, mock2);
-
-        camelContext.stop();
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java
deleted file mode 100644
index 23393598f1e..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-public class VmMultipleContextsStartStopTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testStartStop() throws Exception {
-        /* Check that contexts are communicated */
-        MockEndpoint mock = context2.getEndpoint("mock:result", MockEndpoint.class);
-        mock.expectedMessageCount(1);
-        template.requestBody("direct:test", "Hello world!");
-        mock.assertIsSatisfied();
-        mock.reset();
-
-        /* Restart the consumer Camel Context */
-        context2.stop();
-        context2.start();
-
-        /* Send a message again and assert that it's received */
-        template.requestBody("direct:test", "Hello world!");
-        mock.assertIsSatisfied();
-
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:test").to("vm:foo");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo").to("mock:result");
-            }
-        };
-
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmQueueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmQueueTest.java
deleted file mode 100644
index e78f4fef72a..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmQueueTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-public class VmQueueTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testQueue() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceivedInAnyOrder("Hello World", "Bye World", "Goodday World", "Bar");
-
-        template2.sendBody("vm:foo", "Hello World");
-        template2.sendBody("vm:foo?size=20", "Bye World");
-        template2.sendBody("vm:foo?concurrentConsumers=5", "Goodday World");
-        template.sendBody("vm:bar", "Bar");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:bar").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?size=20&concurrentConsumers=2").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmShouldNotUseSameThreadTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmShouldNotUseSameThreadTest.java
deleted file mode 100644
index 442adc491db..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmShouldNotUseSameThreadTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- * Unit test to verify continuing using NOT same thread on the consumer side.
- */
-public class VmShouldNotUseSameThreadTest extends AbstractVmTestSupport {
-
-    private static long id;
-    private final ThreadLocal<String> local = new ThreadLocal<>();
-
-    @Test
-    public void testNotUseSameThread() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("Hello World");
-
-        template2.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                from("vm:foo").process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        assertNull(local.get());
-                        assertNotSame(id, Thread.currentThread().getId(), "Thread is should not be same");
-                    }
-                }).to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        local.set("Hello");
-                        id = Thread.currentThread().getId();
-                    }
-                }).to("vm:foo");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmShouldUseConsumerContext.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmShouldUseConsumerContext.java
deleted file mode 100644
index 5d688baa2f4..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmShouldUseConsumerContext.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class VmShouldUseConsumerContext extends AbstractVmTestSupport {
-
-    public void testConsumerContext() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
-        String out = template2.requestBody("direct:start", "Hello World", String.class);
-        assertEquals("Hello World", out);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                // using "toD" instead of "to" make use of the exchange context
-                // to resolve the direct endpoint at route execution.
-                // if the exchange context is not the excepted one, the toD will
-                // fail
-                from("vm:test").toD("direct:process");
-                from("direct:process").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:test");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmTimeoutIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmTimeoutIssueTest.java
deleted file mode 100644
index 3bac2189df6..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmTimeoutIssueTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangeTimedOutException;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
-public class VmTimeoutIssueTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testVmTimeoutWithAnotherVm() throws Exception {
-        try {
-            template2.requestBody("vm:start1?timeout=1000", "Hello");
-            fail("Should have thrown an exception");
-        } catch (CamelExecutionException e) {
-            ExchangeTimedOutException cause = assertIsInstanceOf(ExchangeTimedOutException.class, e.getCause());
-            assertEquals(500, cause.getTimeout());
-        }
-    }
-
-    @Test
-    public void testVmTimeoutWithProcessor() throws Exception {
-        try {
-            template2.requestBody("vm:start2?timeout=4000", "Hello");
-            fail("Should have thrown an exception");
-        } catch (CamelExecutionException e) {
-            ExchangeTimedOutException cause = assertIsInstanceOf(ExchangeTimedOutException.class, e.getCause());
-            assertEquals(2000, cause.getTimeout());
-        }
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:end").delay(1000).transform().constant("Bye World");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                errorHandler(noErrorHandler());
-
-                from("vm:start1?timeout=1000").to("log:AFTER_START1").to("vm:end?timeout=500").to("log:AFTER_END");
-
-                from("vm:start2?timeout=4000").to("log:AFTER_START2").process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        // this exception will trigger to stop asap
-                        throw new ExchangeTimedOutException(exchange, 2000);
-                    }
-                }).to("log:AFTER_PROCESSOR");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmUseSameQueueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmUseSameQueueTest.java
deleted file mode 100644
index 2a4ed4b48c2..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmUseSameQueueTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-public class VmUseSameQueueTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testVmUseSameQueue() throws Exception {
-        getMockEndpoint("mock:result").expectedMessageCount(2);
-
-        template2.sendBody("direct:start", "Hello World");
-        template2.sendBody("direct:start", "Bye World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?size=500").to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskCompleteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskCompleteTest.java
deleted file mode 100644
index b062325f39c..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskCompleteTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class VmWaitForTaskCompleteTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOut() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        String out = template2.requestBody("direct:start", "Hello World", String.class);
-        assertEquals("Bye World", out);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
-    public void testInOnly() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        // we send an in only but we use Always to wait for it to complete
-        // and since the route changes the payload we can get the response
-        // anyway
-        Exchange out = template2.send("direct:start", new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setBody("Hello World");
-                exchange.setPattern(ExchangePattern.InOnly);
-            }
-        });
-        assertEquals("Bye World", out.getIn().getBody());
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?waitForTaskToComplete=Always").transform(constant("Bye World")).to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo?waitForTaskToComplete=Always");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java
deleted file mode 100644
index 8da5e349029..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class VmWaitForTaskIfReplyExpectedTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOut() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        String out = template2.requestBody("direct:start", "Hello World", String.class);
-        assertEquals("Bye World", out);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
-    public void testInOnly() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        Exchange out = template2.send("direct:start", new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setBody("Hello World");
-                exchange.setPattern(ExchangePattern.InOnly);
-            }
-        });
-        // we do not expect a reply and thus do no wait so we just get our own
-        // input back
-        assertEquals("Hello World", out.getIn().getBody());
-        assertNull(out.getOut().getBody());
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?waitForTaskToComplete=IfReplyExpected").transform(constant("Bye World")).to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo?waitForTaskToComplete=IfReplyExpected");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskNewerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskNewerTest.java
deleted file mode 100644
index 67a86d5f083..00000000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskNewerTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.vm;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class VmWaitForTaskNewerTest extends AbstractVmTestSupport {
-
-    @Test
-    public void testInOut() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        String out = template2.requestBody("direct:start", "Hello World", String.class);
-        // we do not wait for the response so we just get our own input back
-        assertEquals("Hello World", out);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
-    public void testInOnly() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
-        Exchange out = template2.send("direct:start", new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setBody("Hello World");
-                exchange.setPattern(ExchangePattern.InOnly);
-            }
-        });
-        // we do not wait for the response so we just get our own input back
-        assertEquals("Hello World", out.getIn().getBody());
-        assertNull(out.getOut().getBody());
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("vm:foo?waitForTaskToComplete=Never").transform(constant("Bye World")).to("mock:result");
-            }
-        };
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilderForSecondContext() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("vm:foo?waitForTaskToComplete=Never");
-            }
-        };
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/StreamCachingInOutTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/StreamCachingInOutTest.java
index 1c2116df0b8..3139cc8a142 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/StreamCachingInOutTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/StreamCachingInOutTest.java
@@ -65,8 +65,8 @@ public class StreamCachingInOutTest extends ContextTestSupport {
                 context.getStreamCachingStrategy().setSpoolThreshold(1);
                 from("direct:c").noStreamCaching().to("direct:d").convertBodyTo(String.class).to("mock:c");
                 from("direct:d").streamCaching().process(new TestProcessor());
-                from("direct:e").noStreamCaching().to("direct-vm:f").convertBodyTo(String.class).to("mock:e");
-                from("direct-vm:f").streamCaching().process(new TestProcessor());
+                from("direct:e").noStreamCaching().to("direct:f").convertBodyTo(String.class).to("mock:e");
+                from("direct:f").streamCaching().process(new TestProcessor());
             }
         };
     }
diff --git a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index fc2cfbbcc6e..eac65774df1 100644
--- a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -75,7 +75,6 @@ debezium-postgres
 debezium-sqlserver
 digitalocean
 direct
-direct-vm
 disruptor
 disruptor-vm
 djl
diff --git a/docs/components/modules/ROOT/examples/json/direct-vm.json b/docs/components/modules/ROOT/examples/json/direct-vm.json
deleted file mode 120000
index a7598d71abd..00000000000
--- a/docs/components/modules/ROOT/examples/json/direct-vm.json
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../components/camel-directvm/src/generated/resources/org/apache/camel/component/directvm/direct-vm.json
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/images/camel-direct-vm.png b/docs/components/modules/ROOT/images/camel-direct-vm.png
deleted file mode 120000
index ff91c65ccf4..00000000000
--- a/docs/components/modules/ROOT/images/camel-direct-vm.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-directvm/src/main/docs/camel-direct-vm.png
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 424e17b33b5..90d9bd28d0b 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -80,7 +80,6 @@
 ** xref:dhis2-component.adoc[DHIS2]
 ** xref:digitalocean-component.adoc[DigitalOcean]
 ** xref:direct-component.adoc[Direct]
-** xref:direct-vm-component.adoc[Direct VM]
 ** xref:disruptor-component.adoc[Disruptor]
 ** xref:disruptor-vm-component.adoc[Disruptor VM]
 ** xref:dns-component.adoc[DNS]
diff --git a/docs/components/modules/ROOT/pages/direct-vm-component.adoc b/docs/components/modules/ROOT/pages/direct-vm-component.adoc
deleted file mode 120000
index af136787e6d..00000000000
--- a/docs/components/modules/ROOT/pages/direct-vm-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-directvm/src/main/docs/direct-vm-component.adoc
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
index a1ceb05f1f1..2b6a5e3a059 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
@@ -24,6 +24,7 @@ The following components has been removed:
 | camel-atmos                          | none
 | camel-caffeine-lrucache              | camel-cache, camel-ignite, camel-infinispan
 | camel-cdi                            | camel-spring-boot, camel-quarkus
+| camel-directvm                       | camel-direct
 | camel-elasticsearch-rest             | camel-elasticsearch
 | camel-gora                           | none
 | camel-hbase                          | none
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index 59eadc4dea4..e89e284c467 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -1066,20 +1066,6 @@ public interface ComponentsBuilderFactory {
     static org.apache.camel.builder.component.dsl.DirectComponentBuilderFactory.DirectComponentBuilder direct() {
         return org.apache.camel.builder.component.dsl.DirectComponentBuilderFactory.direct();
     }
-    /**
-     * Direct VM (camel-directvm)
-     * Call another endpoint from any Camel Context in the same JVM
-     * synchronously.
-     * 
-     * Category: core,endpoint
-     * Since: 2.10
-     * Maven coordinates: org.apache.camel:camel-directvm
-     * 
-     * @return the dsl builder
-     */
-    static org.apache.camel.builder.component.dsl.DirectVmComponentBuilderFactory.DirectVmComponentBuilder directVm() {
-        return org.apache.camel.builder.component.dsl.DirectVmComponentBuilderFactory.directVm();
-    }
     /**
      * Disruptor (camel-disruptor)
      * Provides asynchronous SEDA behavior using LMAX Disruptor.
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DirectVmComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DirectVmComponentBuilderFactory.java
deleted file mode 100644
index 2b520c3a522..00000000000
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DirectVmComponentBuilderFactory.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder.component.dsl;
-
-import javax.annotation.processing.Generated;
-import org.apache.camel.Component;
-import org.apache.camel.builder.component.AbstractComponentBuilder;
-import org.apache.camel.builder.component.ComponentBuilder;
-import org.apache.camel.component.directvm.DirectVmComponent;
-
-/**
- * Call another endpoint from any Camel Context in the same JVM synchronously.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
-public interface DirectVmComponentBuilderFactory {
-
-    /**
-     * Direct VM (camel-directvm)
-     * Call another endpoint from any Camel Context in the same JVM
-     * synchronously.
-     * 
-     * Category: core,endpoint
-     * Since: 2.10
-     * Maven coordinates: org.apache.camel:camel-directvm
-     * 
-     * @return the dsl builder
-     */
-    static DirectVmComponentBuilder directVm() {
-        return new DirectVmComponentBuilderImpl();
-    }
-
-    /**
-     * Builder for the Direct VM component.
-     */
-    interface DirectVmComponentBuilder
-            extends
-                ComponentBuilder<DirectVmComponent> {
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * If sending a message to a direct endpoint which has no active
-         * consumer, then we can tell the producer to block and wait for the
-         * consumer to become active.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: producer
-         * 
-         * @param block the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder block(boolean block) {
-            doSetProperty("block", block);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * The timeout value to use if block is enabled.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 30000
-         * Group: producer
-         * 
-         * @param timeout the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder timeout(long timeout) {
-            doSetProperty("timeout", timeout);
-            return this;
-        }
-        /**
-         * Whether autowiring is enabled. This is used for automatic autowiring
-         * options (the option must be marked as autowired) by looking up in the
-         * registry to find if there is a single instance of matching type,
-         * which then gets configured on the component. This can be used for
-         * automatic configuring JDBC data sources, JMS connection factories,
-         * AWS Clients, etc.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param autowiredEnabled the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder autowiredEnabled(
-                boolean autowiredEnabled) {
-            doSetProperty("autowiredEnabled", autowiredEnabled);
-            return this;
-        }
-        /**
-         * Sets a HeaderFilterStrategy that will only be applied on producer
-         * endpoints (on both directions: request and response). Default value:
-         * none.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.HeaderFilterStrategy&lt;/code&gt;
-         * type.
-         * 
-         * Group: advanced
-         * 
-         * @param headerFilterStrategy the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder headerFilterStrategy(
-                org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) {
-            doSetProperty("headerFilterStrategy", headerFilterStrategy);
-            return this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default DirectVmComponentBuilder propagateProperties(
-                boolean propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-    }
-
-    class DirectVmComponentBuilderImpl
-            extends
-                AbstractComponentBuilder<DirectVmComponent>
-            implements
-                DirectVmComponentBuilder {
-        @Override
-        protected DirectVmComponent buildConcreteComponent() {
-            return new DirectVmComponent();
-        }
-        @Override
-        protected boolean setPropertyOnComponent(
-                Component component,
-                String name,
-                Object value) {
-            switch (name) {
-            case "bridgeErrorHandler": ((DirectVmComponent) component).setBridgeErrorHandler((boolean) value); return true;
-            case "block": ((DirectVmComponent) component).setBlock((boolean) value); return true;
-            case "lazyStartProducer": ((DirectVmComponent) component).setLazyStartProducer((boolean) value); return true;
-            case "timeout": ((DirectVmComponent) component).setTimeout((long) value); return true;
-            case "autowiredEnabled": ((DirectVmComponent) component).setAutowiredEnabled((boolean) value); return true;
-            case "headerFilterStrategy": ((DirectVmComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true;
-            case "propagateProperties": ((DirectVmComponent) component).setPropagateProperties((boolean) value); return true;
-            default: return false;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/dsl/camel-componentdsl/src/generated/resources/metadata.json b/dsl/camel-componentdsl/src/generated/resources/metadata.json
index 17ece380d4d..97adb1b3a77 100644
--- a/dsl/camel-componentdsl/src/generated/resources/metadata.json
+++ b/dsl/camel-componentdsl/src/generated/resources/metadata.json
@@ -1705,28 +1705,6 @@
     "producerOnly": false,
     "lenientProperties": false
   },
-  "DirectVmComponentBuilderFactory": {
-    "kind": "component",
-    "name": "direct-vm",
-    "title": "Direct VM",
-    "description": "Call another endpoint from any Camel Context in the same JVM synchronously.",
-    "deprecated": false,
-    "firstVersion": "2.10.0",
-    "label": "core,endpoint",
-    "javaType": "org.apache.camel.component.directvm.DirectVmComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-directvm",
-    "version": "4.0.0-SNAPSHOT",
-    "scheme": "direct-vm",
-    "extendsScheme": "",
-    "syntax": "direct-vm:name",
-    "async": true,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
   "DisruptorComponentBuilderFactory": {
     "kind": "component",
     "name": "disruptor",
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index fa1475302a8..79ae4029f90 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -85,7 +85,6 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.DigitalOceanEndpointBuilderFactory.DigitalOceanBuilders,
             org.apache.camel.builder.endpoint.dsl.DigitalSignatureEndpointBuilderFactory.DigitalSignatureBuilders,
             org.apache.camel.builder.endpoint.dsl.DirectEndpointBuilderFactory.DirectBuilders,
-            org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.DirectVmBuilders,
             org.apache.camel.builder.endpoint.dsl.DisruptorEndpointBuilderFactory.DisruptorBuilders,
             org.apache.camel.builder.endpoint.dsl.DisruptorVmEndpointBuilderFactory.DisruptorVmBuilders,
             org.apache.camel.builder.endpoint.dsl.DnsEndpointBuilderFactory.DnsBuilders,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 6c364b8e7e2..862bf77857e 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -82,7 +82,6 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.DigitalOceanEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DigitalSignatureEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DirectEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DisruptorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DisruptorVmEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DnsEndpointBuilderFactory,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index f4cd5a2a5d7..7f2a176d822 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -3514,51 +3514,6 @@ public class StaticEndpointBuilders {
             String path) {
         return org.apache.camel.builder.endpoint.dsl.DirectEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
-    /**
-     * Direct VM (camel-directvm)
-     * Call another endpoint from any Camel Context in the same JVM
-     * synchronously.
-     * 
-     * Category: core,endpoint
-     * Since: 2.10
-     * Maven coordinates: org.apache.camel:camel-directvm
-     * 
-     * Syntax: <code>direct-vm:name</code>
-     * 
-     * Path parameter: name (required)
-     * Name of direct-vm endpoint
-     * 
-     * @param path name
-     * @return the dsl builder
-     */
-    public static org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.DirectVmEndpointBuilder directVm(
-            String path) {
-        return org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.endpointBuilder("direct-vm", path);
-    }
-    /**
-     * Direct VM (camel-directvm)
-     * Call another endpoint from any Camel Context in the same JVM
-     * synchronously.
-     * 
-     * Category: core,endpoint
-     * Since: 2.10
-     * Maven coordinates: org.apache.camel:camel-directvm
-     * 
-     * Syntax: <code>direct-vm:name</code>
-     * 
-     * Path parameter: name (required)
-     * Name of direct-vm endpoint
-     * 
-     * @param componentName to use a custom component name for the endpoint
-     * instead of the default name
-     * @param path name
-     * @return the dsl builder
-     */
-    public static org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.DirectVmEndpointBuilder directVm(
-            String componentName,
-            String path) {
-        return org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.endpointBuilder(componentName, path);
-    }
     /**
      * Disruptor (camel-disruptor)
      * Provides asynchronous SEDA behavior using LMAX Disruptor.
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DirectVmEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DirectVmEndpointBuilderFactory.java
deleted file mode 100644
index fa2e4ab4474..00000000000
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DirectVmEndpointBuilderFactory.java
+++ /dev/null
@@ -1,568 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder.endpoint.dsl;
-
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.function.*;
-import java.util.stream.*;
-import javax.annotation.processing.Generated;
-import org.apache.camel.builder.EndpointConsumerBuilder;
-import org.apache.camel.builder.EndpointProducerBuilder;
-import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
-
-/**
- * Call another endpoint from any Camel Context in the same JVM synchronously.
- * 
- * Generated by camel build tools - do NOT edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface DirectVmEndpointBuilderFactory {
-
-
-    /**
-     * Builder for endpoint consumers for the Direct VM component.
-     */
-    public interface DirectVmEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default AdvancedDirectVmEndpointConsumerBuilder advanced() {
-            return (AdvancedDirectVmEndpointConsumerBuilder) this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint consumers for the Direct VM component.
-     */
-    public interface AdvancedDirectVmEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default DirectVmEndpointConsumerBuilder basic() {
-            return (DirectVmEndpointConsumerBuilder) this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer (advanced)
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: consumer (advanced)
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder bridgeErrorHandler(
-                String bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * To let the consumer use a custom ExceptionHandler. Notice if the
-         * option bridgeErrorHandler is enabled then this option is not in use.
-         * By default the consumer will deal with exceptions, that will be
-         * logged at WARN or ERROR level and ignored.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exceptionHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder exceptionHandler(
-                org.apache.camel.spi.ExceptionHandler exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * To let the consumer use a custom ExceptionHandler. Notice if the
-         * option bridgeErrorHandler is enabled then this option is not in use.
-         * By default the consumer will deal with exceptions, that will be
-         * logged at WARN or ERROR level and ignored.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exceptionHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder exceptionHandler(
-                String exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exchangePattern the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder exchangePattern(
-                org.apache.camel.ExchangePattern exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exchangePattern the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder exchangePattern(
-                String exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder propagateProperties(
-                boolean propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointConsumerBuilder propagateProperties(
-                String propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint producers for the Direct VM component.
-     */
-    public interface DirectVmEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedDirectVmEndpointProducerBuilder advanced() {
-            return (AdvancedDirectVmEndpointProducerBuilder) this;
-        }
-        /**
-         * If sending a message to a direct endpoint which has no active
-         * consumer, then we can tell the producer to block and wait for the
-         * consumer to become active.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: producer
-         * 
-         * @param block the value to set
-         * @return the dsl builder
-         */
-        default DirectVmEndpointProducerBuilder block(boolean block) {
-            doSetProperty("block", block);
-            return this;
-        }
-        /**
-         * If sending a message to a direct endpoint which has no active
-         * consumer, then we can tell the producer to block and wait for the
-         * consumer to become active.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: producer
-         * 
-         * @param block the value to set
-         * @return the dsl builder
-         */
-        default DirectVmEndpointProducerBuilder block(String block) {
-            doSetProperty("block", block);
-            return this;
-        }
-        /**
-         * Whether the producer should fail by throwing an exception, when
-         * sending to a Direct-VM endpoint with no active consumers.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param failIfNoConsumers the value to set
-         * @return the dsl builder
-         */
-        default DirectVmEndpointProducerBuilder failIfNoConsumers(
-                boolean failIfNoConsumers) {
-            doSetProperty("failIfNoConsumers", failIfNoConsumers);
-            return this;
-        }
-        /**
-         * Whether the producer should fail by throwing an exception, when
-         * sending to a Direct-VM endpoint with no active consumers.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param failIfNoConsumers the value to set
-         * @return the dsl builder
-         */
-        default DirectVmEndpointProducerBuilder failIfNoConsumers(
-                String failIfNoConsumers) {
-            doSetProperty("failIfNoConsumers", failIfNoConsumers);
-            return this;
-        }
-        /**
-         * The timeout value to use if block is enabled.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 30000
-         * Group: producer
-         * 
-         * @param timeout the value to set
-         * @return the dsl builder
-         */
-        default DirectVmEndpointProducerBuilder timeout(long timeout) {
-            doSetProperty("timeout", timeout);
-            return this;
-        }
-        /**
-         * The timeout value to use if block is enabled.
-         * 
-         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 30000
-         * Group: producer
-         * 
-         * @param timeout the value to set
-         * @return the dsl builder
-         */
-        default DirectVmEndpointProducerBuilder timeout(String timeout) {
-            doSetProperty("timeout", timeout);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint producers for the Direct VM component.
-     */
-    public interface AdvancedDirectVmEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default DirectVmEndpointProducerBuilder basic() {
-            return (DirectVmEndpointProducerBuilder) this;
-        }
-        /**
-         * Sets a HeaderFilterStrategy that will only be applied on producer
-         * endpoints (on both directions: request and response). Default value:
-         * none.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.HeaderFilterStrategy&lt;/code&gt;
-         * type.
-         * 
-         * Group: producer (advanced)
-         * 
-         * @param headerFilterStrategy the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointProducerBuilder headerFilterStrategy(
-                org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) {
-            doSetProperty("headerFilterStrategy", headerFilterStrategy);
-            return this;
-        }
-        /**
-         * Sets a HeaderFilterStrategy that will only be applied on producer
-         * endpoints (on both directions: request and response). Default value:
-         * none.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.spi.HeaderFilterStrategy&lt;/code&gt;
-         * type.
-         * 
-         * Group: producer (advanced)
-         * 
-         * @param headerFilterStrategy the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointProducerBuilder headerFilterStrategy(
-                String headerFilterStrategy) {
-            doSetProperty("headerFilterStrategy", headerFilterStrategy);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointProducerBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointProducerBuilder lazyStartProducer(
-                String lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointProducerBuilder propagateProperties(
-                boolean propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointProducerBuilder propagateProperties(
-                String propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint for the Direct VM component.
-     */
-    public interface DirectVmEndpointBuilder
-            extends
-                DirectVmEndpointConsumerBuilder,
-                DirectVmEndpointProducerBuilder {
-        default AdvancedDirectVmEndpointBuilder advanced() {
-            return (AdvancedDirectVmEndpointBuilder) this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint for the Direct VM component.
-     */
-    public interface AdvancedDirectVmEndpointBuilder
-            extends
-                AdvancedDirectVmEndpointConsumerBuilder,
-                AdvancedDirectVmEndpointProducerBuilder {
-        default DirectVmEndpointBuilder basic() {
-            return (DirectVmEndpointBuilder) this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointBuilder propagateProperties(
-                boolean propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-        /**
-         * Whether to propagate or not properties from the producer side to the
-         * consumer side, and vice versa. Default value: true.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param propagateProperties the value to set
-         * @return the dsl builder
-         */
-        default AdvancedDirectVmEndpointBuilder propagateProperties(
-                String propagateProperties) {
-            doSetProperty("propagateProperties", propagateProperties);
-            return this;
-        }
-    }
-
-    public interface DirectVmBuilders {
-        /**
-         * Direct VM (camel-directvm)
-         * Call another endpoint from any Camel Context in the same JVM
-         * synchronously.
-         * 
-         * Category: core,endpoint
-         * Since: 2.10
-         * Maven coordinates: org.apache.camel:camel-directvm
-         * 
-         * Syntax: <code>direct-vm:name</code>
-         * 
-         * Path parameter: name (required)
-         * Name of direct-vm endpoint
-         * 
-         * @param path name
-         * @return the dsl builder
-         */
-        default DirectVmEndpointBuilder directVm(String path) {
-            return DirectVmEndpointBuilderFactory.endpointBuilder("direct-vm", path);
-        }
-        /**
-         * Direct VM (camel-directvm)
-         * Call another endpoint from any Camel Context in the same JVM
-         * synchronously.
-         * 
-         * Category: core,endpoint
-         * Since: 2.10
-         * Maven coordinates: org.apache.camel:camel-directvm
-         * 
-         * Syntax: <code>direct-vm:name</code>
-         * 
-         * Path parameter: name (required)
-         * Name of direct-vm endpoint
-         * 
-         * @param componentName to use a custom component name for the endpoint
-         * instead of the default name
-         * @param path name
-         * @return the dsl builder
-         */
-        default DirectVmEndpointBuilder directVm(
-                String componentName,
-                String path) {
-            return DirectVmEndpointBuilderFactory.endpointBuilder(componentName, path);
-        }
-    }
-    static DirectVmEndpointBuilder endpointBuilder(
-            String componentName,
-            String path) {
-        class DirectVmEndpointBuilderImpl extends AbstractEndpointBuilder implements DirectVmEndpointBuilder, AdvancedDirectVmEndpointBuilder {
-            public DirectVmEndpointBuilderImpl(String path) {
-                super(componentName, path);
-            }
-        }
-        return new DirectVmEndpointBuilderImpl(path);
-    }
-}
\ No newline at end of file
diff --git a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
index efd0d43d172..80e97850d19 100644
--- a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
+++ b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
@@ -90,7 +90,6 @@ org.apache.camel.component.debezium.DebeziumPostgresComponent=camel:debezium-pos
 org.apache.camel.component.debezium.DebeziumSqlserverComponent=camel:debezium-sqlserver
 org.apache.camel.component.digitalocean.DigitalOceanComponent=camel:digitalocean
 org.apache.camel.component.direct.DirectComponent=camel:direct
-org.apache.camel.component.directvm.DirectVmComponent=camel:directvm
 org.apache.camel.component.disruptor.DisruptorComponent=camel:disruptor
 org.apache.camel.component.disruptor.vm.DisruptorVmComponent=camel:disruptor
 org.apache.camel.component.djl.DJLComponent=camel:djl