You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2022/04/01 09:56:22 UTC

[camel] branch main updated: CAMEL-17879: removed the deprecated camel-beanstalk component

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 0a978dd  CAMEL-17879: removed the deprecated camel-beanstalk component
0a978dd is described below

commit 0a978dde30f56542414e9e77bbc60ac3b603ea45
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Apr 1 09:46:24 2022 +0200

    CAMEL-17879: removed the deprecated camel-beanstalk component
---
 camel-dependencies/pom.xml                         |   1 -
 .../org/apache/camel/catalog/components.properties |   1 -
 .../apache/camel/catalog/components/beanstalk.json |  75 ----
 components/camel-beanstalk/pom.xml                 |  72 ----
 .../beanstalk/BeanstalkComponentConfigurer.java    |  67 ----
 .../beanstalk/BeanstalkEndpointConfigurer.java     | 202 ----------
 .../beanstalk/BeanstalkEndpointUriFactory.java     |  97 -----
 .../services/org/apache/camel/component.properties |   7 -
 .../services/org/apache/camel/component/beanstalk  |   2 -
 .../apache/camel/configurer/beanstalk-component    |   2 -
 .../org/apache/camel/configurer/beanstalk-endpoint |   2 -
 .../org/apache/camel/urifactory/beanstalk-endpoint |   2 -
 .../camel/component/beanstalk/beanstalk.json       |  75 ----
 .../src/main/docs/beanstalk-component.adoc         | 152 --------
 .../component/beanstalk/BeanstalkCommand.java      |  28 --
 .../component/beanstalk/BeanstalkComponent.java    |  93 -----
 .../component/beanstalk/BeanstalkConsumer.java     | 271 --------------
 .../component/beanstalk/BeanstalkEndpoint.java     | 203 ----------
 .../beanstalk/BeanstalkExchangeHelper.java         |  44 ---
 .../component/beanstalk/BeanstalkProducer.java     | 132 -------
 .../component/beanstalk/ConnectionSettings.java    | 129 -------
 .../beanstalk/ConnectionSettingsFactory.java       |  45 ---
 .../apache/camel/component/beanstalk/Headers.java  |  64 ----
 .../beanstalk/processors/BuryCommand.java          |  49 ---
 .../component/beanstalk/processors/Command.java    |  25 --
 .../beanstalk/processors/DefaultCommand.java       |  45 ---
 .../beanstalk/processors/DeleteCommand.java        |  47 ---
 .../beanstalk/processors/KickCommand.java          |  45 ---
 .../component/beanstalk/processors/PutCommand.java |  51 ---
 .../beanstalk/processors/ReleaseCommand.java       |  53 ---
 .../beanstalk/processors/TouchCommand.java         |  47 ---
 .../component/beanstalk/AwaitingConsumerTest.java  | 100 -----
 .../beanstalk/BeanstalkMockTestSupport.java        |  51 ---
 .../beanstalk/ConnectionSettingsTest.java          |  62 ----
 .../beanstalk/ConsumerCompletionTest.java          | 155 --------
 .../beanstalk/ConsumerToProducerHeadersTest.java   | 115 ------
 .../camel/component/beanstalk/EndpointTest.java    |  81 ----
 .../apache/camel/component/beanstalk/Helper.java   |  86 -----
 .../component/beanstalk/ImmediateConsumerTest.java | 103 ------
 .../camel/component/beanstalk/ProducerTest.java    | 408 ---------------------
 .../beanstalk/TestExchangeCopyProcessor.java       |  35 --
 .../integration/BeanstalkCamelITSupport.java       |  41 ---
 .../integration/BuryProducerIntegrationIT.java     |  87 -----
 .../integration/ConsumerIntegrationIT.java         |  70 ----
 .../integration/DeleteProducerIntegrationIT.java   |  81 ----
 .../integration/PutProducerIntegrationIT.java      | 114 ------
 .../integration/ReleaseProducerIntegrationIT.java  |  87 -----
 .../integration/TouchProducerIntegrationIT.java    |  87 -----
 .../src/test/resources/log4j2.properties           |  28 --
 components/pom.xml                                 |   1 -
 .../org/apache/camel/main/components.properties    |   1 -
 .../modules/ROOT/examples/json/beanstalk.json      |   1 -
 docs/components/modules/ROOT/nav.adoc              |   1 -
 .../modules/ROOT/pages/beanstalk-component.adoc    |   1 -
 .../EndpointConsumerDeserializersResolver.java     |   1 -
 .../EndpointProducerDeserializersResolver.java     |   1 -
 parent/pom.xml                                     |   1 -
 57 files changed, 3927 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index c858fb6..e7c2142 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -78,7 +78,6 @@
     <azure-storage-datalake-version>12.7.1</azure-storage-datalake-version>
     <azure-storage-queue-version>12.11.4</azure-storage-queue-version>
     <beanio-version>2.1.0</beanio-version>
-    <beanstalkd-client-version>1.4.6</beanstalkd-client-version>
     <bouncycastle-version>1.70</bouncycastle-version>
     <box-java-sdk-version>2.58.0</box-java-sdk-version>
     <braintree-gateway-version>3.14.0</braintree-gateway-version>
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 f1f2fa3..a13ec42 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
@@ -42,7 +42,6 @@ azure-storage-datalake
 azure-storage-queue
 bean
 bean-validator
-beanstalk
 bonita
 box
 braintree
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/beanstalk.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/beanstalk.json
deleted file mode 100644
index 5d27ee1..0000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/beanstalk.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "beanstalk",
-    "title": "Beanstalk",
-    "description": "Retrieve and post-process Beanstalk jobs.",
-    "deprecated": true,
-    "firstVersion": "2.15.0",
-    "label": "messaging",
-    "javaType": "org.apache.camel.component.beanstalk.BeanstalkComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-beanstalk",
-    "version": "3.17.0-SNAPSHOT",
-    "scheme": "beanstalk",
-    "extendsScheme": "",
-    "syntax": "beanstalk:connectionSettings",
-    "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 [...]
-    "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 [...]
-    "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 [...]
-    "connectionSettingsFactory": { "kind": "property", "displayName": "Connection Settings Factory", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.beanstalk.ConnectionSettingsFactory", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Custom ConnectionSettingsFactory. Specify which ConnectionSettingsFactory to use to make connections to Beanstalkd. Especially useful for [...]
-  },
-  "headers": {
-    "beanstalk.priority": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority value set" },
-    "beanstalk.delay": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Job delay in seconds" },
-    "beanstalk.timeToRun": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol)" },
-    "beanstalk.jobId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Job ID" },
-    "beanstalk.result": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The flag indicating if the operation was a success or not" },
-    "beanstalk.tube": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the tube that contains this job" },
-    "beanstalk.state": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "\u201Cready\u201D or \u201Cdelayed\u201D or \u201Creserved\u201D or \u201Cburied\u201D (must be \u201Creserved\u201D)" },
-    "beanstalk.age": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The time in seconds since the put command that created this job" },
-    "beanstalk.time-left": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of seconds left until the server puts this job into the ready queue" },
-    "beanstalk.timeouts": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times this job has timed out during a reservation" },
-    "beanstalk.releases": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times a client has released this job from a reservation" },
-    "beanstalk.buries": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times this job has been buried" },
-    "beanstalk.kicks": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times this job has been kicked" }
-  },
-  "properties": {
-    "connectionSettings": { "kind": "path", "displayName": "Connection Settings", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Connection settings host:port\/tube" },
-    "command": { "kind": "parameter", "displayName": "Command", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.beanstalk.BeanstalkCommand", "enum": [ "bury", "release", "put", "touch", "delete", "kick" ], "deprecated": false, "autowired": false, "secret": false, "description": "put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned in beanstalk.jobId message header. de [...]
-    "jobDelay": { "kind": "parameter", "displayName": "Job Delay", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Job delay in seconds." },
-    "jobPriority": { "kind": "parameter", "displayName": "Job Priority", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Job priority. (0 is the highest, see Beanstalk protocol)" },
-    "jobTimeToRun": { "kind": "parameter", "displayName": "Job Time To Run", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60, "description": "Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol)" },
-    "awaitJob": { "kind": "parameter", "displayName": "Await Job", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to wait for job to complete before ack the job from beanstalk" },
-    "bridgeErrorHandler": { "kind": "parameter", "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 m [...]
-    "onFailure": { "kind": "parameter", "displayName": "On Failure", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "org.apache.camel.component.beanstalk.BeanstalkCommand", "enum": [ "bury", "release", "put", "touch", "delete", "kick" ], "deprecated": false, "autowired": false, "secret": false, "description": "Command to use when processing failed." },
-    "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
-    "useBlockIO": { "kind": "parameter", "displayName": "Use Block IO", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to use blockIO." },
-    "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", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
-    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
-    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
-    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
-    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
-    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
-    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
-    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
-    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
-    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
-    "useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }
-  }
-}
diff --git a/components/camel-beanstalk/pom.xml b/components/camel-beanstalk/pom.xml
deleted file mode 100644
index e67f410..0000000
--- a/components/camel-beanstalk/pom.xml
+++ /dev/null
@@ -1,72 +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/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>3.17.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-beanstalk</artifactId>
-    <packaging>jar</packaging>
-    <name>Camel :: Beanstalk (deprecated)</name>
-    <description>Camel Beanstalk component</description>
-
-    <properties>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-
-        <!-- Beanstalkd Java library -->
-        <dependency>
-            <groupId>com.surftools</groupId>
-            <artifactId>BeanstalkClient</artifactId>
-            <version>${beanstalkd-client-version}</version>
-        </dependency>
-
-        <!-- test dependencies -->
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-junit5</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkComponentConfigurer.java b/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkComponentConfigurer.java
deleted file mode 100644
index 401df8b..0000000
--- a/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkComponentConfigurer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.beanstalk;
-
-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 BeanstalkComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        BeanstalkComponent target = (BeanstalkComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "connectionsettingsfactory":
-        case "connectionSettingsFactory": target.setConnectionSettingsFactory(property(camelContext, org.apache.camel.component.beanstalk.ConnectionSettingsFactory.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.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 "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "connectionsettingsfactory":
-        case "connectionSettingsFactory": return org.apache.camel.component.beanstalk.ConnectionSettingsFactory.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        BeanstalkComponent target = (BeanstalkComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "connectionsettingsfactory":
-        case "connectionSettingsFactory": return target.getConnectionSettingsFactory();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkEndpointConfigurer.java b/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkEndpointConfigurer.java
deleted file mode 100644
index 2ef1284..0000000
--- a/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkEndpointConfigurer.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.beanstalk;
-
-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 BeanstalkEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        BeanstalkEndpoint target = (BeanstalkEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "awaitjob":
-        case "awaitJob": target.setAwaitJob(property(camelContext, boolean.class, value)); return true;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffmultiplier":
-        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "command": target.setCommand(property(camelContext, org.apache.camel.component.beanstalk.BeanstalkCommand.class, value)); return true;
-        case "delay": target.setDelay(property(camelContext, long.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 "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
-        case "initialdelay":
-        case "initialDelay": target.setInitialDelay(property(camelContext, long.class, value)); return true;
-        case "jobdelay":
-        case "jobDelay": target.setJobDelay(property(camelContext, int.class, value)); return true;
-        case "jobpriority":
-        case "jobPriority": target.setJobPriority(property(camelContext, long.class, value)); return true;
-        case "jobtimetorun":
-        case "jobTimeToRun": target.setJobTimeToRun(property(camelContext, int.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "onfailure":
-        case "onFailure": target.setOnFailure(property(camelContext, org.apache.camel.component.beanstalk.BeanstalkCommand.class, value)); return true;
-        case "pollstrategy":
-        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
-        case "repeatcount":
-        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
-        case "runlogginglevel":
-        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
-        case "scheduler": target.setScheduler(property(camelContext, java.lang.Object.class, value)); return true;
-        case "schedulerproperties":
-        case "schedulerProperties": target.setSchedulerProperties(property(camelContext, java.util.Map.class, value)); return true;
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true;
-        case "startscheduler":
-        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
-        case "timeunit":
-        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
-        case "useblockio":
-        case "useBlockIO": target.setUseBlockIO(property(camelContext, boolean.class, value)); return true;
-        case "usefixeddelay":
-        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "awaitjob":
-        case "awaitJob": return boolean.class;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return int.class;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return int.class;
-        case "backoffmultiplier":
-        case "backoffMultiplier": return int.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "command": return org.apache.camel.component.beanstalk.BeanstalkCommand.class;
-        case "delay": return long.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "greedy": return boolean.class;
-        case "initialdelay":
-        case "initialDelay": return long.class;
-        case "jobdelay":
-        case "jobDelay": return int.class;
-        case "jobpriority":
-        case "jobPriority": return long.class;
-        case "jobtimetorun":
-        case "jobTimeToRun": return int.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "onfailure":
-        case "onFailure": return org.apache.camel.component.beanstalk.BeanstalkCommand.class;
-        case "pollstrategy":
-        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
-        case "repeatcount":
-        case "repeatCount": return long.class;
-        case "runlogginglevel":
-        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
-        case "scheduler": return java.lang.Object.class;
-        case "schedulerproperties":
-        case "schedulerProperties": return java.util.Map.class;
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": return boolean.class;
-        case "startscheduler":
-        case "startScheduler": return boolean.class;
-        case "timeunit":
-        case "timeUnit": return java.util.concurrent.TimeUnit.class;
-        case "useblockio":
-        case "useBlockIO": return boolean.class;
-        case "usefixeddelay":
-        case "useFixedDelay": return boolean.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        BeanstalkEndpoint target = (BeanstalkEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "awaitjob":
-        case "awaitJob": return target.isAwaitJob();
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
-        case "backoffmultiplier":
-        case "backoffMultiplier": return target.getBackoffMultiplier();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "command": return target.getCommand();
-        case "delay": return target.getDelay();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "greedy": return target.isGreedy();
-        case "initialdelay":
-        case "initialDelay": return target.getInitialDelay();
-        case "jobdelay":
-        case "jobDelay": return target.getJobDelay();
-        case "jobpriority":
-        case "jobPriority": return target.getJobPriority();
-        case "jobtimetorun":
-        case "jobTimeToRun": return target.getJobTimeToRun();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "onfailure":
-        case "onFailure": return target.getOnFailure();
-        case "pollstrategy":
-        case "pollStrategy": return target.getPollStrategy();
-        case "repeatcount":
-        case "repeatCount": return target.getRepeatCount();
-        case "runlogginglevel":
-        case "runLoggingLevel": return target.getRunLoggingLevel();
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return target.getScheduledExecutorService();
-        case "scheduler": return target.getScheduler();
-        case "schedulerproperties":
-        case "schedulerProperties": return target.getSchedulerProperties();
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": return target.isSendEmptyMessageWhenIdle();
-        case "startscheduler":
-        case "startScheduler": return target.isStartScheduler();
-        case "timeunit":
-        case "timeUnit": return target.getTimeUnit();
-        case "useblockio":
-        case "useBlockIO": return target.isUseBlockIO();
-        case "usefixeddelay":
-        case "useFixedDelay": return target.isUseFixedDelay();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "schedulerproperties":
-        case "schedulerProperties": return java.lang.Object.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkEndpointUriFactory.java b/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkEndpointUriFactory.java
deleted file mode 100644
index 90647d3..0000000
--- a/components/camel-beanstalk/src/generated/java/org/apache/camel/component/beanstalk/BeanstalkEndpointUriFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.beanstalk;
-
-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 BeanstalkEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":connectionSettings";
-
-    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<>(28);
-        props.add("awaitJob");
-        props.add("backoffErrorThreshold");
-        props.add("backoffIdleThreshold");
-        props.add("backoffMultiplier");
-        props.add("bridgeErrorHandler");
-        props.add("command");
-        props.add("connectionSettings");
-        props.add("delay");
-        props.add("exceptionHandler");
-        props.add("exchangePattern");
-        props.add("greedy");
-        props.add("initialDelay");
-        props.add("jobDelay");
-        props.add("jobPriority");
-        props.add("jobTimeToRun");
-        props.add("lazyStartProducer");
-        props.add("onFailure");
-        props.add("pollStrategy");
-        props.add("repeatCount");
-        props.add("runLoggingLevel");
-        props.add("scheduledExecutorService");
-        props.add("scheduler");
-        props.add("schedulerProperties");
-        props.add("sendEmptyMessageWhenIdle");
-        props.add("startScheduler");
-        props.add("timeUnit");
-        props.add("useBlockIO");
-        props.add("useFixedDelay");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
-        Set<String> prefixes = new HashSet<>(1);
-        prefixes.add("scheduler.");
-        MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "beanstalk".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, "connectionSettings", null, false, 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-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/component.properties
deleted file mode 100644
index 31586df..0000000
--- a/components/camel-beanstalk/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=beanstalk
-groupId=org.apache.camel
-artifactId=camel-beanstalk
-version=3.17.0-SNAPSHOT
-projectName=Camel :: Beanstalk (deprecated)
-projectDescription=Camel Beanstalk component
diff --git a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/component/beanstalk b/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/component/beanstalk
deleted file mode 100644
index 138137f..0000000
--- a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/component/beanstalk
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.beanstalk.BeanstalkComponent
diff --git a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/configurer/beanstalk-component b/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/configurer/beanstalk-component
deleted file mode 100644
index 873b90b..0000000
--- a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/configurer/beanstalk-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.beanstalk.BeanstalkComponentConfigurer
diff --git a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/configurer/beanstalk-endpoint b/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/configurer/beanstalk-endpoint
deleted file mode 100644
index 33d3615..0000000
--- a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/configurer/beanstalk-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.beanstalk.BeanstalkEndpointConfigurer
diff --git a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/urifactory/beanstalk-endpoint b/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/urifactory/beanstalk-endpoint
deleted file mode 100644
index 39d4838..0000000
--- a/components/camel-beanstalk/src/generated/resources/META-INF/services/org/apache/camel/urifactory/beanstalk-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.beanstalk.BeanstalkEndpointUriFactory
diff --git a/components/camel-beanstalk/src/generated/resources/org/apache/camel/component/beanstalk/beanstalk.json b/components/camel-beanstalk/src/generated/resources/org/apache/camel/component/beanstalk/beanstalk.json
deleted file mode 100644
index 5d27ee1..0000000
--- a/components/camel-beanstalk/src/generated/resources/org/apache/camel/component/beanstalk/beanstalk.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "beanstalk",
-    "title": "Beanstalk",
-    "description": "Retrieve and post-process Beanstalk jobs.",
-    "deprecated": true,
-    "firstVersion": "2.15.0",
-    "label": "messaging",
-    "javaType": "org.apache.camel.component.beanstalk.BeanstalkComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-beanstalk",
-    "version": "3.17.0-SNAPSHOT",
-    "scheme": "beanstalk",
-    "extendsScheme": "",
-    "syntax": "beanstalk:connectionSettings",
-    "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 [...]
-    "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 [...]
-    "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 [...]
-    "connectionSettingsFactory": { "kind": "property", "displayName": "Connection Settings Factory", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.beanstalk.ConnectionSettingsFactory", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Custom ConnectionSettingsFactory. Specify which ConnectionSettingsFactory to use to make connections to Beanstalkd. Especially useful for [...]
-  },
-  "headers": {
-    "beanstalk.priority": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority value set" },
-    "beanstalk.delay": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Job delay in seconds" },
-    "beanstalk.timeToRun": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol)" },
-    "beanstalk.jobId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Job ID" },
-    "beanstalk.result": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The flag indicating if the operation was a success or not" },
-    "beanstalk.tube": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the tube that contains this job" },
-    "beanstalk.state": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "\u201Cready\u201D or \u201Cdelayed\u201D or \u201Creserved\u201D or \u201Cburied\u201D (must be \u201Creserved\u201D)" },
-    "beanstalk.age": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The time in seconds since the put command that created this job" },
-    "beanstalk.time-left": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of seconds left until the server puts this job into the ready queue" },
-    "beanstalk.timeouts": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times this job has timed out during a reservation" },
-    "beanstalk.releases": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times a client has released this job from a reservation" },
-    "beanstalk.buries": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times this job has been buried" },
-    "beanstalk.kicks": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of times this job has been kicked" }
-  },
-  "properties": {
-    "connectionSettings": { "kind": "path", "displayName": "Connection Settings", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Connection settings host:port\/tube" },
-    "command": { "kind": "parameter", "displayName": "Command", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.beanstalk.BeanstalkCommand", "enum": [ "bury", "release", "put", "touch", "delete", "kick" ], "deprecated": false, "autowired": false, "secret": false, "description": "put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned in beanstalk.jobId message header. de [...]
-    "jobDelay": { "kind": "parameter", "displayName": "Job Delay", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Job delay in seconds." },
-    "jobPriority": { "kind": "parameter", "displayName": "Job Priority", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Job priority. (0 is the highest, see Beanstalk protocol)" },
-    "jobTimeToRun": { "kind": "parameter", "displayName": "Job Time To Run", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60, "description": "Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol)" },
-    "awaitJob": { "kind": "parameter", "displayName": "Await Job", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to wait for job to complete before ack the job from beanstalk" },
-    "bridgeErrorHandler": { "kind": "parameter", "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 m [...]
-    "onFailure": { "kind": "parameter", "displayName": "On Failure", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "org.apache.camel.component.beanstalk.BeanstalkCommand", "enum": [ "bury", "release", "put", "touch", "delete", "kick" ], "deprecated": false, "autowired": false, "secret": false, "description": "Command to use when processing failed." },
-    "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
-    "useBlockIO": { "kind": "parameter", "displayName": "Use Block IO", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to use blockIO." },
-    "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", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
-    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
-    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
-    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
-    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
-    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
-    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
-    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
-    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
-    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
-    "useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }
-  }
-}
diff --git a/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc b/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc
deleted file mode 100644
index 523b99a..0000000
--- a/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc
+++ /dev/null
@@ -1,152 +0,0 @@
-= Beanstalk Component (deprecated)
-:doctitle: Beanstalk
-:shortname: beanstalk
-:artifactid: camel-beanstalk
-:description: Retrieve and post-process Beanstalk jobs.
-:since: 2.15
-:supportlevel: Stable-deprecated
-:deprecated: *deprecated*
-:component-header: Both producer and consumer are supported
-//Manually maintained attributes
-:camel-spring-boot-name: beanstalk
-
-*Since Camel {since}*
-
-*{component-header}*
-
-Camel Beanstalk project provides a Camel component for job retrieval and
-post-processing of Beanstalk jobs.
-
-You can find the detailed explanation of Beanstalk job lifecycle
-at http://github.com/kr/beanstalkd/blob/v1.3/doc/protocol.txt[Beanstalk
-protocol].
-
-== Dependencies
-
-Maven users need to add the following dependency to their `pom.xml`
-
-[source,xml]
-------------------------------------------
-<dependency>
-  <groupId>org.apache.camel</groupId>
-  <artifactId>camel-beanstalk</artifactId>
-  <version>${camel-version}</version>
-</dependency>
-------------------------------------------
-
-where `${camel-version`} must be replaced by the actual version of Camel.
-
-== URI format
-
-------------------------------------------
-beanstalk://[host[:port]][/tube][?options]
-------------------------------------------
-
-You may omit either `port` or both `host` and `port`: for the Beanstalk
-defaults to be used (“localhost” and 11300). If you omit `tube`,
-Beanstalk component will use the tube with name “default”.
-
-When listening, you may probably want to watch for jobs from several
-tubes. Just separate them with plus sign, e.g.
-
----------------------------------------
-beanstalk://localhost:11300/tube1+tube2
----------------------------------------
-
-Tube name will be URL decoded, so if your tube names include special
-characters like + or ?, you need to URL-encode them appropriately, or
-use the RAW syntax, see xref:manual:faq:how-do-i-configure-endpoints.adoc[more
-details here].
-
-By the way, you cannot specify several tubes when you are writing jobs
-into Beanstalk.
-
-// 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
-
-
-
-Producer behavior is affected by the `command` parameter which tells
-what to do with the job, it can be
-
-The consumer may delete the job immediately after reserving it or wait
-until Camel routes process it. While the first scenario is more like a
-“message queue”, the second is similar to “job queue”. This behavior is
-controlled by `awaitJob` parameter, which equals `true` by
-default (following Beanstalkd nature).
-
-When synchronous, the consumer calls `delete` on successful job
-completion and calls `bury` on failure. You can choose which command to
-execute in the case of failure by
-specifying `onFailure` parameter in the URI. It can take values
-of `bury`, `delete` or `release`.
-
-There is a boolean parameter `useBlockIO` which corresponds to
-the same parameter in JavaBeanstalkClient library. By default it
-is `true`.
-
-Be careful when specifying `release`, as the failed job will immediately
-become available in the same tube and your consumer will try to acquire
-it again. You can `release` and specify _jobDelay_ though.
-
-The beanstalk consumer is a Scheduled xref:eips:polling-consumer.adoc[Polling
-Consumer] which means there is more options you can configure, such as
-how frequent the consumer should poll. For more details
-see Polling Consumer.
-
-// component headers: START
-include::partial$component-endpoint-headers.adoc[]
-// component headers: END
-
-== Examples
-
-This Camel component lets you both request the jobs for processing and
-supply them to Beanstalkd daemon. Our simple demo routes may look like
-
-[source,java]
-----------------------------------------------------------------------------------------------
-from("beanstalk:testTube").
-   log("Processing job #${exchangeProperty.beanstalk.jobId} with body ${in.body}").
-   process(new Processor() {
-     @Override
-     public void process(Exchange exchange) {
-       // try to make integer value out of body
-       exchange.getIn().setBody( Integer.valueOf(exchange.getIn().getBody(classOf[String])) );
-     }
-   }).
-   log("Parsed job #${exchangeProperty.beanstalk.jobId} to body ${in.body}");
-----------------------------------------------------------------------------------------------
-
-[source,java]
----------------------------------------------------------------------
-from("timer:dig?period=30seconds").
-   setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
-   to("beanstalk:testTube?command=kick");
----------------------------------------------------------------------
-
-In the first route we are listening for new jobs in tube “testTube”.
-When they are arriving, we are trying to parse integer value from the
-message body. If done successful, we log it and this successful exchange
-completion makes Camel component to _delete_ this job from Beanstalk
-automatically. Contrary, when we cannot parse the job data, the exchange
-failed and the Camel component _buries_ it by default, so that it can be
-processed later or probably we are going to inspect failed jobs
-manually.
-
-So the second route periodically requests Beanstalk to _kick_ 10 jobs
-out of buried and/or delayed state to the normal queue.
-
-
-
-
-include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkCommand.java
deleted file mode 100644
index 33abe46..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkCommand.java
+++ /dev/null
@@ -1,28 +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.beanstalk;
-
-public enum BeanstalkCommand {
-
-    bury,
-    release,
-    put,
-    touch,
-    delete,
-    kick
-
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java
deleted file mode 100644
index 0788239..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.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.beanstalk;
-
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-
-/**
- * Beanstalk Camel component.
- * <p/>
- * URI is <code>beanstalk://[host[:port]][/tube]?query</code>
- * <p/>
- * Parameters:
- * <ul>
- * <li><code>command</code> - one of "put", "release", "bury", "touch", "delete", "kick". "put" is the default for
- * Producers.</li>
- * <li><code>jobPriority</code></li>
- * <li><code>jobDelay</code></li>
- * <li><code>jobTimeToRun</code></li>
- * <li><code>consumer.onFailure</code></li>
- * <li><code>consumer.awaitJob</code></li>
- * </ul>
- *
- * @see BeanstalkEndpoint
- * @see ConnectionSettingsFactory
- */
-@Component("beanstalk")
-public class BeanstalkComponent extends DefaultComponent {
-    public static final String DEFAULT_TUBE = "default";
-
-    public static final String COMMAND_BURY = "bury";
-    public static final String COMMAND_RELEASE = "release";
-    public static final String COMMAND_PUT = "put";
-    public static final String COMMAND_TOUCH = "touch";
-    public static final String COMMAND_DELETE = "delete";
-    public static final String COMMAND_KICK = "kick";
-
-    public static final long DEFAULT_PRIORITY = 1000; // 0 is highest
-    public static final int DEFAULT_DELAY = 0;
-    public static final int DEFAULT_TIME_TO_RUN = 60; // if 0 the daemon sets 1.
-
-    private static ConnectionSettingsFactory connectionSettingsFactory = ConnectionSettingsFactory.DEFAULT;
-
-    public BeanstalkComponent() {
-    }
-
-    @Override
-    public boolean useRawUri() {
-        return true;
-    }
-
-    @Override
-    protected Endpoint createEndpoint(final String uri, final String remaining, final Map<String, Object> parameters)
-            throws Exception {
-        return new BeanstalkEndpoint(uri, this, connectionSettingsFactory.parseUri(remaining), remaining);
-    }
-
-    /**
-     * Custom {@link ConnectionSettingsFactory}.
-     * <p/>
-     * Specify which {@link ConnectionSettingsFactory} to use to make connections to Beanstalkd. Especially useful for
-     * unit testing without beanstalkd daemon (you can mock {@link ConnectionSettings})
-     *
-     * @param connFactory the connection factory
-     * @see               ConnectionSettingsFactory
-     */
-    @Metadata(label = "advanced")
-    public static void setConnectionSettingsFactory(ConnectionSettingsFactory connFactory) {
-        BeanstalkComponent.connectionSettingsFactory = connFactory;
-    }
-
-    public static ConnectionSettingsFactory getConnectionSettingsFactory() {
-        return connectionSettingsFactory;
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java
deleted file mode 100644
index a4ae7db..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java
+++ /dev/null
@@ -1,271 +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.beanstalk;
-
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-
-import com.surftools.BeanstalkClient.BeanstalkException;
-import com.surftools.BeanstalkClient.Client;
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedExchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.beanstalk.processors.BuryCommand;
-import org.apache.camel.component.beanstalk.processors.Command;
-import org.apache.camel.component.beanstalk.processors.DeleteCommand;
-import org.apache.camel.component.beanstalk.processors.ReleaseCommand;
-import org.apache.camel.spi.Synchronization;
-import org.apache.camel.support.ScheduledPollConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * PollingConsumer to read Beanstalk jobs.
- * <p/>
- * The consumer may delete the job immediately or based on successful {@link Exchange} completion. The behavior is
- * configurable by <code>consumer.awaitJob</code> flag (by default <code>true</code>)
- * <p/>
- * This consumer will add a {@link Synchronization} object to every {@link Exchange} object it creates in order to react
- * on successful exchange completion or failure.
- * <p/>
- * In the case of successful completion, Beanstalk's <code>delete</code> method is called upon the job. In the case of
- * failure the default reaction is to call <code>bury</code>.
- * <p/>
- * The reaction on failures is configurable: possible variants are "bury", "release" or "delete"
- */
-public class BeanstalkConsumer extends ScheduledPollConsumer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(BeanstalkConsumer.class);
-
-    private static final String[] STATS_KEY_STR = new String[] { "tube", "state" };
-    private static final String[] STATS_KEY_INT
-            = new String[] { "age", "time-left", "timeouts", "releases", "buries", "kicks" };
-
-    private BeanstalkCommand onFailure;
-    private boolean useBlockIO;
-    private boolean awaitJob;
-    private Client client;
-    private ExecutorService executor;
-    private Synchronization sync;
-
-    private final Runnable initTask = new Runnable() {
-        @Override
-        public void run() {
-            client = getEndpoint().getConnection().newReadingClient(useBlockIO);
-        }
-    };
-
-    private final Callable<Exchange> pollTask = new Callable<Exchange>() {
-        final Integer noWait = 0;
-
-        @Override
-        public Exchange call() throws Exception {
-            if (client == null) {
-                throw new RuntimeCamelException("Beanstalk client not initialized");
-            }
-
-            try {
-                final Job job = client.reserve(noWait);
-                if (job == null) {
-                    return null;
-                }
-
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(String.format("Received job ID %d (data length %d)", job.getJobId(), job.getData().length));
-                }
-
-                final Exchange exchange = createExchange(true);
-                exchange.getIn().setHeader(Headers.JOB_ID, job.getJobId());
-                exchange.getIn().setBody(job.getData(), byte[].class);
-
-                Map<String, String> jobStats = client.statsJob(job.getJobId());
-                if (jobStats != null && !jobStats.isEmpty()) {
-                    for (String key : STATS_KEY_STR) {
-                        if (jobStats.containsKey(key)) {
-                            exchange.getIn().setHeader(Headers.PREFIX + key, jobStats.get(key).trim());
-                        }
-                    }
-
-                    if (jobStats.containsKey("pri")) {
-                        exchange.getIn().setHeader(Headers.PRIORITY, Long.parseLong(jobStats.get("pri").trim()));
-                    }
-
-                    for (String key : STATS_KEY_INT) {
-                        if (jobStats.containsKey(key)) {
-                            exchange.getIn().setHeader(Headers.PREFIX + key, Integer.parseInt(jobStats.get(key).trim()));
-                        }
-                    }
-                }
-
-                if (!awaitJob) {
-                    client.delete(job.getJobId());
-                } else {
-                    exchange.adapt(ExtendedExchange.class).addOnCompletion(sync);
-                }
-
-                return exchange;
-            } catch (BeanstalkException e) {
-                getExceptionHandler().handleException("Beanstalk client error", e);
-                resetClient();
-                return null;
-            }
-        }
-    };
-
-    public BeanstalkConsumer(final BeanstalkEndpoint endpoint, final Processor processor) {
-        super(endpoint, processor);
-    }
-
-    @Override
-    protected int poll() throws Exception {
-        int messagesPolled = 0;
-        while (isPollAllowed()) {
-            final Exchange exchange = executor.submit(pollTask).get();
-            if (exchange == null) {
-                break;
-            }
-
-            ++messagesPolled;
-            getProcessor().process(exchange);
-        }
-        return messagesPolled;
-    }
-
-    public BeanstalkCommand getOnFailure() {
-        return onFailure;
-    }
-
-    public void setOnFailure(BeanstalkCommand onFailure) {
-        this.onFailure = onFailure;
-    }
-
-    public boolean isUseBlockIO() {
-        return useBlockIO;
-    }
-
-    public void setUseBlockIO(boolean useBlockIO) {
-        this.useBlockIO = useBlockIO;
-    }
-
-    public boolean isAwaitJob() {
-        return awaitJob;
-    }
-
-    public void setAwaitJob(boolean awaitJob) {
-        this.awaitJob = awaitJob;
-    }
-
-    @Override
-    public BeanstalkEndpoint getEndpoint() {
-        return (BeanstalkEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        executor = getEndpoint().getCamelContext().getExecutorServiceManager().newSingleThreadExecutor(this,
-                "Beanstalk-Consumer");
-        executor.execute(initTask);
-        sync = new Sync();
-        super.doStart();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        if (executor != null) {
-            getEndpoint().getCamelContext().getExecutorServiceManager().shutdown(executor);
-        }
-    }
-
-    protected void resetClient() {
-        if (client != null) {
-            client.close();
-        }
-        initTask.run();
-    }
-
-    class Sync implements Synchronization {
-        protected final Command successCommand;
-        protected final Command failureCommand;
-
-        Sync() {
-            successCommand = new DeleteCommand(getEndpoint());
-
-            if (BeanstalkComponent.COMMAND_BURY.equals(onFailure.name())) {
-                failureCommand = new BuryCommand(getEndpoint());
-            } else if (BeanstalkComponent.COMMAND_RELEASE.equals(onFailure.name())) {
-                failureCommand = new ReleaseCommand(getEndpoint());
-            } else if (BeanstalkComponent.COMMAND_DELETE.equals(onFailure.name())) {
-                failureCommand = new DeleteCommand(getEndpoint());
-            } else {
-                throw new IllegalArgumentException(String.format("Unknown failure command: %s", onFailure));
-            }
-        }
-
-        @Override
-        public void onComplete(final Exchange exchange) {
-            try {
-                executor.submit(new RunCommand(successCommand, exchange)).get();
-            } catch (Exception e) {
-                LOG.error("Could not run completion of exchange {}", exchange, e);
-            }
-        }
-
-        @Override
-        public void onFailure(final Exchange exchange) {
-            try {
-                executor.submit(new RunCommand(failureCommand, exchange)).get();
-            } catch (Exception e) {
-                LOG.error("{} could not run failure of exchange {}", failureCommand.getClass().getName(), exchange, e);
-            }
-        }
-
-        class RunCommand implements Runnable {
-            private final Command command;
-            private final Exchange exchange;
-
-            RunCommand(final Command command, final Exchange exchange) {
-                this.command = command;
-                this.exchange = exchange;
-            }
-
-            @Override
-            public void run() {
-                try {
-                    doPostProcess();
-                } catch (final Exception e) {
-                    LOG.error("{} could not post-process exchange {}", command.getClass().getName(), exchange, e);
-                    exchange.setException(e);
-                }
-            }
-
-            private void doPostProcess() throws Exception {
-                try {
-                    command.act(client, exchange);
-                } catch (BeanstalkException e) {
-                    LOG.warn("Post-processing {} of exchange {} failed, retrying.", command.getClass().getName(),
-                            exchange, e);
-                    resetClient();
-                    command.act(client, exchange);
-                }
-            }
-        }
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java
deleted file mode 100644
index 655d13f..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java
+++ /dev/null
@@ -1,203 +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.beanstalk;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.AsyncEndpoint;
-import org.apache.camel.Category;
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.beanstalk.processors.BuryCommand;
-import org.apache.camel.component.beanstalk.processors.Command;
-import org.apache.camel.component.beanstalk.processors.DeleteCommand;
-import org.apache.camel.component.beanstalk.processors.KickCommand;
-import org.apache.camel.component.beanstalk.processors.PutCommand;
-import org.apache.camel.component.beanstalk.processors.ReleaseCommand;
-import org.apache.camel.component.beanstalk.processors.TouchCommand;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.ScheduledPollEndpoint;
-
-/**
- * Retrieve and post-process Beanstalk jobs.
- */
-@UriEndpoint(firstVersion = "2.15.0", scheme = "beanstalk", title = "Beanstalk", syntax = "beanstalk:connectionSettings",
-             category = { Category.MESSAGING }, headersClass = Headers.class)
-public class BeanstalkEndpoint extends ScheduledPollEndpoint implements AsyncEndpoint {
-    final ConnectionSettings conn;
-
-    @UriPath(description = "Connection settings host:port/tube")
-    private String connectionSettings;
-    @UriParam
-    private BeanstalkCommand command = BeanstalkCommand.put;
-    @UriParam(defaultValue = "" + BeanstalkComponent.DEFAULT_PRIORITY)
-    private long jobPriority = BeanstalkComponent.DEFAULT_PRIORITY;
-    @UriParam(defaultValue = "" + BeanstalkComponent.DEFAULT_DELAY)
-    private int jobDelay = BeanstalkComponent.DEFAULT_DELAY;
-    @UriParam(defaultValue = "" + BeanstalkComponent.DEFAULT_TIME_TO_RUN)
-    private int jobTimeToRun = BeanstalkComponent.DEFAULT_TIME_TO_RUN;
-    @UriParam(label = "consumer")
-    private BeanstalkCommand onFailure = BeanstalkCommand.bury;
-    @UriParam(label = "consumer", defaultValue = "true")
-    private boolean useBlockIO = true;
-    @UriParam(label = "consumer", defaultValue = "true")
-    private boolean awaitJob = true;
-
-    public BeanstalkEndpoint(final String uri, final Component component, final ConnectionSettings conn,
-                             final String connectionSettings) {
-        super(uri, component);
-        this.conn = conn;
-        this.connectionSettings = connectionSettings;
-    }
-
-    public String getConnectionSettings() {
-        return connectionSettings;
-    }
-
-    public ConnectionSettings getConnection() {
-        return conn;
-    }
-
-    public ConnectionSettings getConn() {
-        return conn;
-    }
-
-    public BeanstalkCommand getCommand() {
-        return command;
-    }
-
-    /**
-     * put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned
-     * in beanstalk.jobId message header. delete, release, touch or bury expect Job ID in the message header
-     * beanstalk.jobId. Result of the operation is returned in beanstalk.result message header kick expects the number
-     * of jobs to kick in the message body and returns the number of jobs actually kicked out in the message header
-     * beanstalk.result.
-     */
-    public void setCommand(BeanstalkCommand command) {
-        this.command = command;
-    }
-
-    public long getJobPriority() {
-        return jobPriority;
-    }
-
-    /**
-     * Job priority. (0 is the highest, see Beanstalk protocol)
-     */
-    public void setJobPriority(long jobPriority) {
-        this.jobPriority = jobPriority;
-    }
-
-    public int getJobDelay() {
-        return jobDelay;
-    }
-
-    /**
-     * Job delay in seconds.
-     */
-    public void setJobDelay(int jobDelay) {
-        this.jobDelay = jobDelay;
-    }
-
-    public int getJobTimeToRun() {
-        return jobTimeToRun;
-    }
-
-    /**
-     * Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol)
-     */
-    public void setJobTimeToRun(int jobTimeToRun) {
-        this.jobTimeToRun = jobTimeToRun;
-    }
-
-    public BeanstalkCommand getOnFailure() {
-        return onFailure;
-    }
-
-    /**
-     * Command to use when processing failed.
-     */
-    public void setOnFailure(BeanstalkCommand onFailure) {
-        this.onFailure = onFailure;
-    }
-
-    public boolean isUseBlockIO() {
-        return useBlockIO;
-    }
-
-    /**
-     * Whether to use blockIO.
-     */
-    public void setUseBlockIO(boolean useBlockIO) {
-        this.useBlockIO = useBlockIO;
-    }
-
-    public boolean isAwaitJob() {
-        return awaitJob;
-    }
-
-    /**
-     * Whether to wait for job to complete before ack the job from beanstalk
-     */
-    public void setAwaitJob(boolean awaitJob) {
-        this.awaitJob = awaitJob;
-    }
-
-    /**
-     * Creates Camel producer.
-     * <p/>
-     * Depending on the command parameter (see {@link BeanstalkComponent} URI) it will create one of the producer
-     * implementations.
-     *
-     * @return                          {@link Producer} instance
-     * @throws IllegalArgumentException when {@link ConnectionSettings} cannot create a writable {@link Client}
-     */
-    @Override
-    public Producer createProducer() throws Exception {
-        Command cmd;
-        if (BeanstalkComponent.COMMAND_PUT.equals(command.name())) {
-            cmd = new PutCommand(this);
-        } else if (BeanstalkComponent.COMMAND_RELEASE.equals(command.name())) {
-            cmd = new ReleaseCommand(this);
-        } else if (BeanstalkComponent.COMMAND_BURY.equals(command.name())) {
-            cmd = new BuryCommand(this);
-        } else if (BeanstalkComponent.COMMAND_TOUCH.equals(command.name())) {
-            cmd = new TouchCommand(this);
-        } else if (BeanstalkComponent.COMMAND_DELETE.equals(command.name())) {
-            cmd = new DeleteCommand(this);
-        } else if (BeanstalkComponent.COMMAND_KICK.equals(command.name())) {
-            cmd = new KickCommand(this);
-        } else {
-            throw new IllegalArgumentException(String.format("Unknown command for Beanstalk endpoint: %s", command));
-        }
-
-        return new BeanstalkProducer(this, cmd);
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        BeanstalkConsumer consumer = new BeanstalkConsumer(this, processor);
-        consumer.setAwaitJob(isAwaitJob());
-        consumer.setOnFailure(getOnFailure());
-        consumer.setUseBlockIO(isUseBlockIO());
-        configureConsumer(consumer);
-        return consumer;
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkExchangeHelper.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkExchangeHelper.java
deleted file mode 100644
index 4061e01..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkExchangeHelper.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.beanstalk;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.support.ExchangeHelper;
-
-public final class BeanstalkExchangeHelper {
-
-    private BeanstalkExchangeHelper() {
-    }
-
-    public static long getPriority(final BeanstalkEndpoint endpoint, final Message in) {
-        return in.getHeader(Headers.PRIORITY, endpoint.getJobPriority(), Long.class);
-    }
-
-    public static int getDelay(final BeanstalkEndpoint endpoint, final Message in) {
-        return in.getHeader(Headers.DELAY, endpoint.getJobDelay(), Integer.class);
-    }
-
-    public static int getTimeToRun(final BeanstalkEndpoint endpoint, final Message in) {
-        return in.getHeader(Headers.TIME_TO_RUN, endpoint.getJobTimeToRun(), Integer.class);
-    }
-
-    public static long getJobID(final Exchange exchange) throws NoSuchHeaderException {
-        return ExchangeHelper.getMandatoryHeader(exchange, Headers.JOB_ID, Long.class);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java
deleted file mode 100644
index beb820d..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkProducer.java
+++ /dev/null
@@ -1,132 +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.beanstalk;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-
-import com.surftools.BeanstalkClient.BeanstalkException;
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.component.beanstalk.processors.Command;
-import org.apache.camel.support.DefaultAsyncProducer;
-
-public class BeanstalkProducer extends DefaultAsyncProducer {
-    private ExecutorService executor;
-    private Client client;
-    private final Command command;
-
-    public BeanstalkProducer(BeanstalkEndpoint endpoint, final Command command) {
-        super(endpoint);
-        this.command = command;
-    }
-
-    public Command getCommand() {
-        return command;
-    }
-
-    @Override
-    public void process(final Exchange exchange) throws Exception {
-        Future f = executor.submit(new RunCommand(exchange));
-        f.get();
-    }
-
-    @Override
-    public boolean process(final Exchange exchange, final AsyncCallback callback) {
-        try {
-            executor.submit(new RunCommand(exchange, callback));
-        } catch (Exception t) {
-            exchange.setException(t);
-            callback.done(true);
-            return true;
-        }
-        return false;
-    }
-
-    protected void resetClient() {
-        closeClient();
-        initClient();
-    }
-
-    protected void closeClient() {
-        if (client != null) {
-            client.close();
-        }
-    }
-
-    protected void initClient() {
-        this.client = getEndpoint().getConnection().newWritingClient();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        executor = getEndpoint().getCamelContext().getExecutorServiceManager().newSingleThreadExecutor(this,
-                "Beanstalk-Producer");
-        executor.execute(() -> initClient());
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        getEndpoint().getCamelContext().getExecutorServiceManager().shutdown(executor);
-        closeClient();
-        super.doStop();
-    }
-
-    @Override
-    public BeanstalkEndpoint getEndpoint() {
-        return (BeanstalkEndpoint) super.getEndpoint();
-    }
-
-    class RunCommand implements Runnable {
-        private final Exchange exchange;
-        private final AsyncCallback callback;
-
-        RunCommand(final Exchange exchange) {
-            this(exchange, null);
-        }
-
-        RunCommand(final Exchange exchange, final AsyncCallback callback) {
-            this.exchange = exchange;
-            this.callback = callback;
-        }
-
-        @Override
-        public void run() {
-            try {
-                doRun();
-            } catch (Exception t) {
-                exchange.setException(t);
-            } finally {
-                if (callback != null) {
-                    callback.done(false);
-                }
-            }
-        }
-
-        private void doRun() throws Exception {
-            try {
-                command.act(client, exchange);
-            } catch (BeanstalkException e) {
-                /* Retry one time */
-                resetClient();
-                command.act(client, exchange);
-            }
-        }
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/ConnectionSettings.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/ConnectionSettings.java
deleted file mode 100644
index c072d08..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/ConnectionSettings.java
+++ /dev/null
@@ -1,129 +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.beanstalk;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Scanner;
-
-import com.surftools.BeanstalkClient.Client;
-import com.surftools.BeanstalkClientImpl.ClientImpl;
-
-/**
- * Represents the connection to Beanstalk.
- * <p/>
- * Along with the list of tubes it may watch.
- */
-public class ConnectionSettings {
-    final String host;
-    final int port;
-    final String[] tubes;
-
-    public ConnectionSettings(final String tube) {
-        this(Client.DEFAULT_HOST, Client.DEFAULT_PORT, tube);
-    }
-
-    public ConnectionSettings(final String host, final String tube) {
-        this(host, Client.DEFAULT_PORT, tube);
-    }
-
-    public ConnectionSettings(final String host, final int port, final String tube) {
-        this.host = host;
-        this.port = port;
-
-        final Scanner scanner = new Scanner(tube);
-        scanner.useDelimiter("\\+");
-        final ArrayList<String> buffer = new ArrayList<>();
-        while (scanner.hasNext()) {
-            final String tubeRaw = scanner.next();
-            try {
-                buffer.add(URLDecoder.decode(tubeRaw, "UTF-8"));
-            } catch (UnsupportedEncodingException e) {
-                buffer.add(tubeRaw);
-            }
-        }
-        this.tubes = buffer.toArray(new String[buffer.size()]);
-        scanner.close();
-    }
-
-    /**
-     * Returns the {@link Client} instance ready for writing operations, e.g. "put".
-     * <p/>
-     * <code>use(tube)</code> is applied during this call.
-     *
-     * @return                          {@link Client} instance
-     * @throws IllegalArgumentException the exception is raised when this ConnectionSettings has more than one tube.
-     */
-    public Client newWritingClient() throws IllegalArgumentException {
-        if (tubes.length > 1) {
-            throw new IllegalArgumentException("There must be only one tube specified for Beanstalk producer");
-        }
-
-        final String tube = tubes.length > 0 ? tubes[0] : BeanstalkComponent.DEFAULT_TUBE;
-
-        final ClientImpl client = new ClientImpl(host, port);
-
-        /* FIXME: There is a problem in JavaBeanstalkClient 1.4.4 (at least in 1.4.4),
-           when using uniqueConnectionPerThread=false. The symptom is that ProtocolHandler
-           breaks the protocol, reading incomplete messages. To be investigated. */
-        //client.setUniqueConnectionPerThread(false);
-        client.useTube(tube);
-        return client;
-    }
-
-    /**
-     * Returns the {@link Client} instance for reading operations with all the tubes aleady watched
-     * <p/>
-     * <code>watch(tube)</code> is applied for every tube during this call.
-     *
-     * @param  useBlockIO configuration param to {@link Client}
-     * @return            {@link Client} instance
-     */
-    public Client newReadingClient(boolean useBlockIO) {
-        final ClientImpl client = new ClientImpl(host, port, useBlockIO);
-
-        /* FIXME: There is a problem in JavaBeanstalkClient 1.4.4 (at least in 1.4.4),
-           when using uniqueConnectionPerThread=false. The symptom is that ProtocolHandler
-           breaks the protocol, reading incomplete messages. To be investigated. */
-        //client.setUniqueConnectionPerThread(false);
-        for (String tube : tubes) {
-            client.watch(tube);
-        }
-        return client;
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (obj instanceof ConnectionSettings) {
-            final ConnectionSettings other = (ConnectionSettings) obj;
-            return other.host.equals(host) && other.port == port && Arrays.equals(other.tubes, tubes);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 41 * (41 * (41 + host.hashCode()) + port) + Arrays.hashCode(tubes);
-    }
-
-    @Override
-    public String toString() {
-        return "beanstalk://" + host + ":" + port + "/" + Arrays.toString(tubes);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/ConnectionSettingsFactory.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/ConnectionSettingsFactory.java
deleted file mode 100644
index ecc3e3f..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/ConnectionSettingsFactory.java
+++ /dev/null
@@ -1,45 +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.beanstalk;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import com.surftools.BeanstalkClient.Client;
-
-public class ConnectionSettingsFactory {
-
-    public static final ConnectionSettingsFactory DEFAULT = new ConnectionSettingsFactory();
-    private static final Pattern HOST_PORT_TUBE_RE = Pattern.compile("^(([\\w.-]+)(:([\\d]+))?/)?([\\w%+]*)$");
-
-    public ConnectionSettingsFactory() {
-    }
-
-    public ConnectionSettings parseUri(final String remaining) throws IllegalArgumentException {
-        final Matcher m = HOST_PORT_TUBE_RE.matcher(remaining);
-        if (!m.matches()) {
-            throw new IllegalArgumentException(
-                    String.format("Invalid path format: %s - should be [<hostName>[:<port>]/][<tubes>]", remaining));
-        }
-
-        final String host = m.group(2) != null ? m.group(2) : Client.DEFAULT_HOST;
-        final int port = m.group(4) != null ? Integer.parseInt(m.group(4)) : Client.DEFAULT_PORT;
-        final String tubes = m.group(5) != null ? m.group(5) : "";
-        return new ConnectionSettings(host, port, tubes);
-    }
-
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/Headers.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/Headers.java
deleted file mode 100644
index 87d4d55..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/Headers.java
+++ /dev/null
@@ -1,64 +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.beanstalk;
-
-import org.apache.camel.spi.Metadata;
-
-public final class Headers {
-
-    public static final String PREFIX = "beanstalk.";
-
-    // in
-    @Metadata(description = "The priority value set", javaType = "long")
-    public static final String PRIORITY = PREFIX + "priority";
-    @Metadata(description = "The Job delay in seconds", javaType = "Integer")
-    public static final String DELAY = PREFIX + "delay";
-    @Metadata(description = "The Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol)",
-              javaType = "Integer")
-    public static final String TIME_TO_RUN = PREFIX + "timeToRun";
-
-    // in/out
-    @Metadata(description = "Job ID", javaType = "long")
-    public static final String JOB_ID = PREFIX + "jobId";
-
-    // out
-    @Metadata(description = "The flag indicating if the operation was a success or not", javaType = "Boolean")
-    public static final String RESULT = PREFIX + "result";
-
-    // other info
-    @Metadata(description = "The name of the tube that contains this job", javaType = "String")
-    public static final String TUBE = PREFIX + "tube";
-    @Metadata(description = "“ready” or “delayed” or “reserved” or “buried” (must be “reserved”)", javaType = "String")
-    public static final String STATE = PREFIX + "state";
-    @Metadata(description = "The time in seconds since the put command that created this job", javaType = "Integer")
-    public static final String AGE = PREFIX + "age";
-    @Metadata(description = "The number of seconds left until the server puts this job into the ready queue",
-              javaType = "Integer")
-    public static final String TIME_LEFT = PREFIX + "time-left";
-    @Metadata(description = "The number of times this job has timed out during a reservation", javaType = "Integer")
-    public static final String TIMEOUTS = PREFIX + "timeouts";
-    @Metadata(description = "The number of times a client has released this job from a reservation", javaType = "Integer")
-    public static final String RELEASES = PREFIX + "releases";
-    @Metadata(description = "The number of times this job has been buried", javaType = "Integer")
-    public static final String BURIES = PREFIX + "buries";
-    @Metadata(description = "The number of times this job has been kicked", javaType = "Integer")
-    public static final String KICKS = PREFIX + "kicks";
-
-    private Headers() {
-    }
-
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/BuryCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/BuryCommand.java
deleted file mode 100644
index 74be9a2..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/BuryCommand.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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.apache.camel.component.beanstalk.BeanstalkExchangeHelper;
-import org.apache.camel.component.beanstalk.Headers;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BuryCommand extends DefaultCommand {
-    private static final Logger LOG = LoggerFactory.getLogger(BuryCommand.class);
-
-    public BuryCommand(BeanstalkEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void act(final Client client, final Exchange exchange) throws NoSuchHeaderException {
-        final long jobId = BeanstalkExchangeHelper.getJobID(exchange);
-        final long priority = BeanstalkExchangeHelper.getPriority(endpoint, exchange.getIn());
-        final boolean result = client.bury(jobId, priority);
-
-        if (!result && LOG.isWarnEnabled()) {
-            LOG.warn("Failed to bury job {} (with priority {})", jobId, priority);
-        } else if (LOG.isDebugEnabled()) {
-            LOG.debug("Job {} buried with priority {}. Result is {}", jobId, priority, result);
-        }
-
-        answerWith(exchange, Headers.RESULT, result);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/Command.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/Command.java
deleted file mode 100644
index 5ea6b27..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/Command.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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-
-public interface Command {
-
-    void act(Client client, Exchange exchange) throws Exception;
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/DefaultCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/DefaultCommand.java
deleted file mode 100644
index 8fd9b4c..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/DefaultCommand.java
+++ /dev/null
@@ -1,45 +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.beanstalk.processors;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.apache.camel.support.ExchangeHelper;
-
-abstract class DefaultCommand implements Command {
-    protected final BeanstalkEndpoint endpoint;
-
-    DefaultCommand(BeanstalkEndpoint endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    protected Message getAnswerMessage(final Exchange exchange) {
-        Message answer = exchange.getIn();
-        if (ExchangeHelper.isOutCapable(exchange)) {
-            answer = exchange.getOut();
-            // preserve headers
-            answer.getHeaders().putAll(exchange.getIn().getHeaders());
-        }
-        return answer;
-    }
-
-    protected void answerWith(final Exchange exchange, final String header, final Object value) {
-        final Message answer = getAnswerMessage(exchange);
-        answer.setHeader(header, value);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/DeleteCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/DeleteCommand.java
deleted file mode 100644
index 1eb203f..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/DeleteCommand.java
+++ /dev/null
@@ -1,47 +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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.apache.camel.component.beanstalk.BeanstalkExchangeHelper;
-import org.apache.camel.component.beanstalk.Headers;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DeleteCommand extends DefaultCommand {
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteCommand.class);
-
-    public DeleteCommand(BeanstalkEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void act(final Client client, final Exchange exchange) throws NoSuchHeaderException {
-        final long jobId = BeanstalkExchangeHelper.getJobID(exchange);
-        final boolean result = client.delete(jobId);
-        if (!result) {
-            LOG.warn("Failed to delete job {}", jobId);
-        } else {
-            LOG.debug("Job {} deleted. Result is {}", jobId, result);
-        }
-
-        answerWith(exchange, Headers.RESULT, result);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/KickCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/KickCommand.java
deleted file mode 100644
index a977388..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/KickCommand.java
+++ /dev/null
@@ -1,45 +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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-import org.apache.camel.InvalidPayloadException;
-import org.apache.camel.Message;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class KickCommand extends DefaultCommand {
-    private static final Logger LOG = LoggerFactory.getLogger(KickCommand.class);
-
-    public KickCommand(BeanstalkEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void act(final Client client, final Exchange exchange) throws NoSuchHeaderException, InvalidPayloadException {
-        final Integer jobs = exchange.getIn().getMandatoryBody(Integer.class);
-        final int result = client.kick(jobs);
-
-        LOG.debug("Kick {} jobs. Kicked {} actually.", jobs, result);
-
-        final Message answer = getAnswerMessage(exchange);
-        answer.setBody(result, Integer.class);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/PutCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/PutCommand.java
deleted file mode 100644
index 1ae82c8..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/PutCommand.java
+++ /dev/null
@@ -1,51 +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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.apache.camel.component.beanstalk.BeanstalkExchangeHelper;
-import org.apache.camel.component.beanstalk.Headers;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PutCommand extends DefaultCommand {
-    private static final Logger LOG = LoggerFactory.getLogger(PutCommand.class);
-
-    public PutCommand(BeanstalkEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void act(final Client client, final Exchange exchange) throws NoSuchHeaderException {
-        final Message in = exchange.getIn();
-
-        final long priority = BeanstalkExchangeHelper.getPriority(endpoint, in);
-        final int delay = BeanstalkExchangeHelper.getDelay(endpoint, in);
-        final int timeToRun = BeanstalkExchangeHelper.getTimeToRun(endpoint, in);
-
-        final long jobId = client.put(priority, delay, timeToRun, in.getBody(byte[].class));
-
-        LOG.debug("Created job {} with priority {}, delay {} seconds and time to run {}", jobId, priority, delay,
-                timeToRun);
-
-        answerWith(exchange, Headers.JOB_ID, jobId);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/ReleaseCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/ReleaseCommand.java
deleted file mode 100644
index 202b991..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/ReleaseCommand.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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.apache.camel.component.beanstalk.BeanstalkExchangeHelper;
-import org.apache.camel.component.beanstalk.Headers;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ReleaseCommand extends DefaultCommand {
-    private static final Logger LOG = LoggerFactory.getLogger(ReleaseCommand.class);
-
-    public ReleaseCommand(BeanstalkEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void act(final Client client, final Exchange exchange) throws NoSuchHeaderException {
-        final Message in = exchange.getIn();
-
-        final long jobId = BeanstalkExchangeHelper.getJobID(exchange);
-        final long priority = BeanstalkExchangeHelper.getPriority(endpoint, in);
-        final int delay = BeanstalkExchangeHelper.getDelay(endpoint, in);
-
-        final boolean result = client.release(jobId, priority, delay);
-        if (!result) {
-            LOG.warn("Failed to release job {} (priority {}, delay {})", jobId, priority, delay);
-        } else {
-            LOG.debug("Job {} released with priority {}, delay {} seconds. Result is {}", jobId, priority, delay, result);
-        }
-
-        answerWith(exchange, Headers.RESULT, result);
-    }
-}
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/TouchCommand.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/TouchCommand.java
deleted file mode 100644
index 233d00b..0000000
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/processors/TouchCommand.java
+++ /dev/null
@@ -1,47 +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.beanstalk.processors;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.Exchange;
-import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.beanstalk.BeanstalkEndpoint;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.support.ExchangeHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TouchCommand extends DefaultCommand {
-    private static final Logger LOG = LoggerFactory.getLogger(TouchCommand.class);
-
-    public TouchCommand(BeanstalkEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void act(final Client client, final Exchange exchange) throws NoSuchHeaderException {
-        final Long jobId = ExchangeHelper.getMandatoryHeader(exchange, Headers.JOB_ID, Long.class);
-        final boolean result = client.touch(jobId);
-        if (!result) {
-            LOG.warn("Failed to touch job {}", jobId);
-        } else {
-            LOG.debug("Job {} touched. Result is {}", jobId, result);
-        }
-
-        answerWith(exchange, Headers.RESULT, result);
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/AwaitingConsumerTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/AwaitingConsumerTest.java
deleted file mode 100644
index b0bc787..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/AwaitingConsumerTest.java
+++ /dev/null
@@ -1,100 +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.beanstalk;
-
-import com.surftools.BeanstalkClient.BeanstalkException;
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@DisabledOnOs(OS.WINDOWS)
-public class AwaitingConsumerTest extends BeanstalkMockTestSupport {
-
-    @EndpointInject("beanstalk:tube")
-    protected BeanstalkEndpoint endpoint;
-
-    private String testMessage = "hello, world";
-
-    @Test
-    void testReceive() throws Exception {
-
-        final Job jobMock = mock(Job.class);
-        final long jobId = 111;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenReturn(jobMock)
-                .thenReturn(null);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMessageCount(1);
-        result.expectedBodiesReceived(testMessage);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-        result.assertIsSatisfied(100);
-
-        verify(client, atLeast(1)).reserve(0);
-        verify(client, atLeast(1)).delete(jobId);
-    }
-
-    @Test
-    void testBeanstalkException() throws Exception {
-
-        final Job jobMock = mock(Job.class);
-        final long jobId = 111;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenThrow(new BeanstalkException("test"))
-                .thenReturn(jobMock);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMessageCount(1);
-        result.expectedBodiesReceived(testMessage);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-        result.assertIsSatisfied(100);
-
-        verify(client, atLeast(1)).reserve(anyInt());
-        verify(client, times(1)).close();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("beanstalk:tube").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/BeanstalkMockTestSupport.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/BeanstalkMockTestSupport.java
deleted file mode 100644
index 735fd5e..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/BeanstalkMockTestSupport.java
+++ /dev/null
@@ -1,51 +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.beanstalk;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import static org.mockito.Mockito.reset;
-
-@DisabledOnOs(OS.WINDOWS)
-public class BeanstalkMockTestSupport extends CamelTestSupport {
-
-    @Mock
-    Client client;
-
-    @BeforeEach
-    @Override
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        reset(client);
-        Helper.mockComponent(client);
-        super.setUp();
-    }
-
-    @AfterEach
-    @Override
-    public void tearDown() throws Exception {
-        super.tearDown();
-        Helper.revertComponent();
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConnectionSettingsTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConnectionSettingsTest.java
deleted file mode 100644
index 5f503de..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConnectionSettingsTest.java
+++ /dev/null
@@ -1,62 +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.beanstalk;
-
-import com.surftools.BeanstalkClient.Client;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-public class ConnectionSettingsTest {
-
-    @Test
-    void parseUriTest() {
-        final ConnectionSettingsFactory factory = BeanstalkComponent.getConnectionSettingsFactory();
-        assertEquals(new ConnectionSettings("host.domain.tld", 11300, "someTube"),
-                factory.parseUri("host.domain.tld:11300/someTube"), "Full URI");
-        assertEquals(new ConnectionSettings("host.domain.tld", Client.DEFAULT_PORT, "someTube"),
-                factory.parseUri("host.domain.tld/someTube"), "No port");
-        assertEquals(new ConnectionSettings(Client.DEFAULT_HOST, Client.DEFAULT_PORT, "someTube"), factory.parseUri("someTube"),
-                "Only tube");
-    }
-
-    @Test
-    void parseTubesTest() {
-        final ConnectionSettingsFactory factory = BeanstalkComponent.getConnectionSettingsFactory();
-        assertArrayEquals(new String[] { "tube1", "tube2" }, factory.parseUri("host:90/tube1+tube2").tubes, "Full URI");
-        assertArrayEquals(new String[] { "tube1", "tube2" }, factory.parseUri("host/tube1+tube2").tubes, "No port");
-        assertArrayEquals(new String[] { "tube1", "tube2" }, factory.parseUri("tube1+tube2").tubes, "Only tubes");
-        assertArrayEquals(new String[0], factory.parseUri("").tubes, "Empty URI");
-    }
-
-    @Test
-    void notValidHost() {
-        final ConnectionSettingsFactory factory = BeanstalkComponent.getConnectionSettingsFactory();
-
-        assertThrows(IllegalArgumentException.class, () -> {
-            factory.parseUri("not_valid?host/tube?");
-        }, "Calling on not valid URI must raise exception");
-    }
-
-    @BeforeEach
-    public void setUp() {
-        BeanstalkComponent.setConnectionSettingsFactory(new ConnectionSettingsFactory());
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConsumerCompletionTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConsumerCompletionTest.java
deleted file mode 100644
index bd44679..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConsumerCompletionTest.java
+++ /dev/null
@@ -1,155 +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.beanstalk;
-
-import java.util.concurrent.TimeUnit;
-
-import com.surftools.BeanstalkClient.BeanstalkException;
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.NotifyBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@DisabledOnOs(OS.WINDOWS)
-public class ConsumerCompletionTest extends BeanstalkMockTestSupport {
-    private final String testMessage = "hello, world";
-    private boolean shouldIdie;
-    private final Processor processor = new Processor() {
-        @Override
-        public void process(Exchange exchange) throws InterruptedException {
-            if (shouldIdie) {
-                throw new InterruptedException("die");
-            }
-        }
-    };
-
-    @Test
-    void testDeleteOnComplete() throws Exception {
-
-        final long jobId = 111;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final Job jobMock = mock(Job.class);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenReturn(jobMock)
-                .thenReturn(null);
-        when(client.statsJob(anyLong())).thenReturn(null);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-
-        result.expectedMinimumMessageCount(1);
-        result.expectedBodiesReceived(testMessage);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-
-        context.getRouteController().startRoute("foo");
-
-        result.assertIsSatisfied();
-
-        verify(client, atLeastOnce()).reserve(anyInt());
-        verify(client, atLeastOnce()).statsJob(anyLong());
-        verify(client).delete(jobId);
-    }
-
-    @Test
-    void testReleaseOnFailure() throws Exception {
-        shouldIdie = true;
-        final long jobId = 111;
-        final long priority = BeanstalkComponent.DEFAULT_PRIORITY;
-        final int delay = BeanstalkComponent.DEFAULT_DELAY;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final Job jobMock = mock(Job.class);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenReturn(jobMock)
-                .thenReturn(null);
-        when(client.statsJob(anyLong())).thenReturn(null);
-        when(client.release(anyInt(), anyLong(), anyInt())).thenReturn(true);
-
-        NotifyBuilder notify = new NotifyBuilder(context).whenFailed(1).create();
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMessageCount(0);
-
-        context.getRouteController().startRoute("foo");
-
-        assertTrue(notify.matches(5, TimeUnit.SECONDS));
-
-        verify(client, atLeastOnce()).reserve(anyInt());
-        verify(client, atLeastOnce()).statsJob(anyLong());
-        verify(client).release(jobId, priority, delay);
-    }
-
-    @Test
-    void testBeanstalkException() throws Exception {
-
-        shouldIdie = false;
-        final Job jobMock = mock(Job.class);
-        final long jobId = 111;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenThrow(new BeanstalkException("test"))
-                .thenReturn(jobMock);
-        when(client.statsJob(anyInt())).thenReturn(null);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMessageCount(1);
-        result.expectedBodiesReceived(testMessage);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-
-        context.getRouteController().startRoute("foo");
-
-        result.assertIsSatisfied();
-
-        verify(client, atLeast(1)).reserve(anyInt());
-        verify(client, times(1)).close();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("beanstalk:tube?onFailure=release").routeId("foo")
-                        .process(processor).to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConsumerToProducerHeadersTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConsumerToProducerHeadersTest.java
deleted file mode 100644
index 307faf3..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ConsumerToProducerHeadersTest.java
+++ /dev/null
@@ -1,115 +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.beanstalk;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.EndpointInject;
-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.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@DisabledOnOs(OS.WINDOWS)
-public class ConsumerToProducerHeadersTest extends BeanstalkMockTestSupport {
-
-    @EndpointInject("beanstalk:tube=A")
-    protected BeanstalkEndpoint endpoint;
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    private Processor a;
-    private Processor b;
-
-    @Test
-    void testBeanstalkConsumerToProducer() throws Exception {
-        final long jobId = 111;
-        String testMessage = "hello, world";
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final Job jobMock = mock(Job.class);
-        // stats that may be set in the consumer:
-        // mock stats : "tube", "state", "age", "time-left", "timeouts", "releases", "buries", "kicks"
-        Map<String, String> stats = new HashMap<>();
-        stats.put("tube", "A");
-        stats.put("state", "Test");
-        stats.put("age", "0");
-        stats.put("time-left", "0");
-        stats.put("timeouts", "0");
-        stats.put("releases", "0");
-        stats.put("buries", "0");
-        stats.put("kicks", "0");
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenReturn(jobMock)
-                .thenReturn(null);
-        when(client.statsJob(anyLong())).thenReturn(stats);
-
-        when(client.put(BeanstalkComponent.DEFAULT_PRIORITY,
-                BeanstalkComponent.DEFAULT_DELAY,
-                BeanstalkComponent.DEFAULT_TIME_TO_RUN,
-                payload)).thenReturn(jobId);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-
-        result.expectedMinimumMessageCount(1);
-        result.expectedBodiesReceived(testMessage);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-
-        context.getRouteController().startRoute("foo");
-
-        result.assertIsSatisfied();
-
-        verify(client, atLeastOnce()).reserve(anyInt());
-        verify(client, atLeastOnce()).statsJob(anyLong());
-
-        assertEquals(((TestExchangeCopyProcessor) a).getExchangeCopy().getIn().getHeaders(),
-                ((TestExchangeCopyProcessor) b).getExchangeCopy().getIn().getHeaders());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                a = new TestExchangeCopyProcessor();
-                b = new TestExchangeCopyProcessor();
-
-                from("beanstalk:tube=A").routeId("foo")
-                        .process(a)
-                        .to("beanstalk:tube=B")
-                        .process(b)
-                        .to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.java
deleted file mode 100644
index c48d4fa..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.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.beanstalk;
-
-import org.apache.camel.CamelContext;
-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 static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class EndpointTest {
-    CamelContext context;
-
-    @BeforeEach
-    public void setUp() {
-        context = new DefaultCamelContext(false);
-        context.disableJMX();
-        context.start();
-    }
-
-    @Test
-    void testPriority() {
-        BeanstalkEndpoint endpoint = context.getEndpoint("beanstalk:default?jobPriority=1000", BeanstalkEndpoint.class);
-        assertNotNull(endpoint, "Beanstalk endpoint");
-        assertEquals(1000, endpoint.getJobPriority(), "Priority");
-    }
-
-    @Test
-    void testTimeToRun() {
-        BeanstalkEndpoint endpoint = context.getEndpoint("beanstalk:default?jobTimeToRun=10", BeanstalkEndpoint.class);
-        assertNotNull(endpoint, "Beanstalk endpoint");
-        assertEquals(10, endpoint.getJobTimeToRun(), "Time to run");
-    }
-
-    @Test
-    void testDelay() {
-        BeanstalkEndpoint endpoint = context.getEndpoint("beanstalk:default?jobDelay=10", BeanstalkEndpoint.class);
-        assertNotNull(endpoint, "Beanstalk endpoint");
-        assertEquals(10, endpoint.getJobDelay(), "Delay");
-    }
-
-    @Test
-    void testCommand() {
-        BeanstalkEndpoint endpoint = context.getEndpoint("beanstalk:default?command=release", BeanstalkEndpoint.class);
-        assertNotNull(endpoint, "Beanstalk endpoint");
-        assertEquals(BeanstalkComponent.COMMAND_RELEASE, endpoint.getCommand().name(), "Command");
-    }
-
-    @Test
-    void testTubes() {
-        BeanstalkEndpoint endpoint
-                = context.getEndpoint("beanstalk:host:11303/tube1+tube%2B+tube%3F?command=kick", BeanstalkEndpoint.class);
-        assertNotNull(endpoint, "Beanstalk endpoint");
-        assertEquals(BeanstalkComponent.COMMAND_KICK, endpoint.getCommand().name(), "Command");
-        assertEquals("host", endpoint.conn.host, "Host");
-        assertArrayEquals(new String[] { "tube1", "tube+", "tube?" }, endpoint.conn.tubes, "Tubes");
-    }
-
-    @AfterEach
-    public void tearDown() {
-        context.stop();
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/Helper.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/Helper.java
deleted file mode 100644
index c5276ab..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/Helper.java
+++ /dev/null
@@ -1,86 +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.beanstalk;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.CamelContext;
-
-public final class Helper {
-
-    private Helper() {
-    }
-
-    public static ConnectionSettings mockConn(final Client client) {
-        return new MockConnectionSettings(client);
-    }
-
-    public static void mockComponent(final Client client) {
-        BeanstalkComponent.setConnectionSettingsFactory(new ConnectionSettingsFactory() {
-            @Override
-            public ConnectionSettings parseUri(String uri) {
-                return new MockConnectionSettings(client);
-            }
-        });
-    }
-
-    public static void revertComponent() {
-        BeanstalkComponent.setConnectionSettingsFactory(ConnectionSettingsFactory.DEFAULT);
-    }
-
-    public static BeanstalkEndpoint getEndpoint(String uri, CamelContext context, Client client) throws Exception {
-        BeanstalkEndpoint endpoint = new BeanstalkEndpoint(uri, context.getComponent("beanstalk"), mockConn(client), "");
-        context.addEndpoint(uri, endpoint);
-        return endpoint;
-    }
-
-    public static byte[] stringToBytes(final String s) throws IOException {
-        final ByteArrayOutputStream byteOS = new ByteArrayOutputStream();
-        final DataOutputStream dataStream = new DataOutputStream(byteOS);
-
-        try {
-            dataStream.writeBytes(s);
-            dataStream.flush();
-            return byteOS.toByteArray();
-        } finally {
-            dataStream.close();
-            byteOS.close();
-        }
-    }
-}
-
-class MockConnectionSettings extends ConnectionSettings {
-    private final Client client;
-
-    MockConnectionSettings(Client client) {
-        super("tube");
-        this.client = client;
-    }
-
-    @Override
-    public Client newReadingClient(boolean useBlockIO) {
-        return client;
-    }
-
-    @Override
-    public Client newWritingClient() {
-        return client;
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ImmediateConsumerTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ImmediateConsumerTest.java
deleted file mode 100644
index e8f6b51..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ImmediateConsumerTest.java
+++ /dev/null
@@ -1,103 +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.beanstalk;
-
-import com.surftools.BeanstalkClient.Job;
-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.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@DisabledOnOs(OS.WINDOWS)
-public class ImmediateConsumerTest extends BeanstalkMockTestSupport {
-    final String testMessage = "hello, world";
-    boolean shouldIdie;
-
-    final Processor processor = new Processor() {
-        @Override
-        public void process(Exchange exchange) throws InterruptedException {
-            if (shouldIdie) {
-                throw new InterruptedException("die");
-            }
-        }
-    };
-
-    @Test
-    void testDeleteOnSuccess() throws Exception {
-
-        final Job jobMock = mock(Job.class);
-        final long jobId = 111;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenReturn(jobMock)
-                .thenReturn(null);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMessageCount(1);
-        result.expectedBodiesReceived(testMessage);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-        result.assertIsSatisfied(100);
-
-        verify(client, atLeast(1)).reserve(0);
-        verify(client, atLeast(1)).delete(jobId);
-    }
-
-    @Test
-    void testDeleteOnFailure() throws Exception {
-        shouldIdie = true;
-        final long jobId = 111;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final Job jobMock = mock(Job.class);
-
-        when(jobMock.getJobId()).thenReturn(jobId);
-        when(jobMock.getData()).thenReturn(payload);
-        when(client.reserve(anyInt()))
-                .thenReturn(jobMock)
-                .thenReturn(null);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMinimumMessageCount(1);
-        result.assertIsNotSatisfied(1000);
-
-        verify(client, atLeastOnce()).reserve(anyInt());
-        verify(client, atLeast(1)).delete(jobId);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("beanstalk:tube?awaitJob=false").process(processor).to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ProducerTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ProducerTest.java
deleted file mode 100644
index bb913fe..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/ProducerTest.java
+++ /dev/null
@@ -1,408 +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.beanstalk;
-
-import com.surftools.BeanstalkClient.BeanstalkException;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.Produce;
-import org.apache.camel.Producer;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.processors.BuryCommand;
-import org.apache.camel.component.beanstalk.processors.DeleteCommand;
-import org.apache.camel.component.beanstalk.processors.PutCommand;
-import org.apache.camel.component.beanstalk.processors.ReleaseCommand;
-import org.apache.camel.component.beanstalk.processors.TouchCommand;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.anyLong;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@DisabledOnOs(OS.WINDOWS)
-public class ProducerTest extends BeanstalkMockTestSupport {
-
-    @EndpointInject("beanstalk:tube")
-    protected BeanstalkEndpoint endpoint;
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate direct;
-
-    private final String testMessage = "hello, world";
-
-    @Test
-    void testPut() throws Exception {
-        final long priority = BeanstalkComponent.DEFAULT_PRIORITY;
-        final int delay = BeanstalkComponent.DEFAULT_DELAY;
-        final int timeToRun = BeanstalkComponent.DEFAULT_TIME_TO_RUN;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final long jobId = 111;
-
-        when(client.put(priority, delay, timeToRun, payload)).thenReturn(jobId);
-
-        final Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(PutCommand.class));
-
-        // TODO: SetBodyProcessor(?)
-        final Exchange exchange
-                = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> exchange1.getIn().setBody(testMessage));
-
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).put(priority, delay, timeToRun, payload);
-    }
-
-    @Test
-    void testPutOut() throws Exception {
-        final long priority = BeanstalkComponent.DEFAULT_PRIORITY;
-        final int delay = BeanstalkComponent.DEFAULT_DELAY;
-        final int timeToRun = BeanstalkComponent.DEFAULT_TIME_TO_RUN;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final long jobId = 111;
-
-        when(client.put(priority, delay, timeToRun, payload)).thenReturn(jobId);
-
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(PutCommand.class));
-
-        // TODO: SetBodyProcessor(?)
-        final Exchange exchange
-                = template.send(endpoint, ExchangePattern.InOut, exchange1 -> exchange1.getIn().setBody(testMessage));
-
-        assertEquals(Long.valueOf(jobId), exchange.getMessage().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).put(priority, delay, timeToRun, payload);
-    }
-
-    @Test
-    void testPutWithHeaders() throws Exception {
-        final long priority = 111;
-        final int delay = 5;
-        final int timeToRun = 65;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final long jobId = 111;
-
-        when(client.put(priority, delay, timeToRun, payload)).thenReturn(jobId);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(PutCommand.class));
-
-        // TODO: SetBodyProcessor(?)
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> {
-            exchange1.getIn().setHeader(Headers.PRIORITY, priority);
-            exchange1.getIn().setHeader(Headers.DELAY, delay);
-            exchange1.getIn().setHeader(Headers.TIME_TO_RUN, timeToRun);
-            exchange1.getIn().setBody(testMessage);
-        });
-
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).put(priority, delay, timeToRun, payload);
-    }
-
-    @Test
-    void testBury() throws Exception {
-        final long priority = BeanstalkComponent.DEFAULT_PRIORITY;
-        final long jobId = 111;
-
-        endpoint.setCommand(BeanstalkCommand.bury);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(BuryCommand.class));
-
-        when(client.bury(jobId, priority)).thenReturn(true);
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly,
-                exchange1 -> exchange1.getIn().setHeader(Headers.JOB_ID, jobId));
-
-        assertEquals(Boolean.TRUE, exchange.getIn().getHeader(Headers.RESULT, Boolean.class), "Op result");
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).bury(jobId, priority);
-    }
-
-    @Test
-    void testBuryNoJobId() throws Exception {
-        endpoint.setCommand(BeanstalkCommand.bury);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(BuryCommand.class));
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> {
-        });
-
-        assertTrue(exchange.isFailed(), "Exchange failed");
-
-        verify(client, never()).bury(anyLong(), anyLong());
-    }
-
-    @Test
-    void testBuryWithHeaders() throws Exception {
-        final long priority = 1000;
-        final long jobId = 111;
-
-        endpoint.setCommand(BeanstalkCommand.bury);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(BuryCommand.class));
-
-        when(client.bury(jobId, priority)).thenReturn(true);
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) {
-                exchange.getIn().setHeader(Headers.PRIORITY, priority);
-                exchange.getIn().setHeader(Headers.JOB_ID, jobId);
-            }
-        });
-
-        assertEquals(Boolean.TRUE, exchange.getIn().getHeader(Headers.RESULT, Boolean.class), "Op result");
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).bury(jobId, priority);
-    }
-
-    @Test
-    void testDelete() throws Exception {
-        final long jobId = 111;
-
-        endpoint.setCommand(BeanstalkCommand.delete);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(DeleteCommand.class));
-
-        when(client.delete(jobId)).thenReturn(true);
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly,
-                exchange1 -> exchange1.getIn().setHeader(Headers.JOB_ID, jobId));
-
-        assertEquals(Boolean.TRUE, exchange.getIn().getHeader(Headers.RESULT, Boolean.class), "Op result");
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).delete(jobId);
-    }
-
-    @Test
-    void testDeleteNoJobId() throws Exception {
-        endpoint.setCommand(BeanstalkCommand.delete);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(DeleteCommand.class));
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> {
-        });
-
-        assertTrue(exchange.isFailed(), "Exchange failed");
-
-        verify(client, never()).delete(anyLong());
-    }
-
-    @Test
-    void testRelease() throws Exception {
-        final long priority = BeanstalkComponent.DEFAULT_PRIORITY;
-        final int delay = BeanstalkComponent.DEFAULT_DELAY;
-        final long jobId = 111;
-
-        endpoint.setCommand(BeanstalkCommand.release);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(ReleaseCommand.class));
-
-        when(client.release(jobId, priority, delay)).thenReturn(true);
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly,
-                exchange1 -> exchange1.getIn().setHeader(Headers.JOB_ID, jobId));
-
-        assertEquals(Boolean.TRUE, exchange.getIn().getHeader(Headers.RESULT, Boolean.class), "Op result");
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).release(jobId, priority, delay);
-    }
-
-    @Test
-    void testReleaseNoJobId() throws Exception {
-        endpoint.setCommand(BeanstalkCommand.release);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(ReleaseCommand.class));
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> {
-        });
-
-        assertTrue(exchange.isFailed(), "Exchange failed");
-
-        verify(client, never()).release(anyLong(), anyLong(), anyInt());
-    }
-
-    @Test
-    void testReleaseWithHeaders() throws Exception {
-        final long priority = 1001;
-        final int delay = 124;
-        final long jobId = 111;
-
-        endpoint.setCommand(BeanstalkCommand.release);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(ReleaseCommand.class));
-
-        when(client.release(jobId, priority, delay)).thenReturn(true);
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> {
-            exchange1.getIn().setHeader(Headers.JOB_ID, jobId);
-            exchange1.getIn().setHeader(Headers.PRIORITY, priority);
-            exchange1.getIn().setHeader(Headers.DELAY, delay);
-        });
-
-        assertEquals(Boolean.TRUE, exchange.getIn().getHeader(Headers.RESULT, Boolean.class), "Op result");
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).release(jobId, priority, delay);
-    }
-
-    @Test
-    void testTouch() throws Exception {
-        final long jobId = 111;
-
-        endpoint.setCommand(BeanstalkCommand.touch);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(TouchCommand.class));
-
-        when(client.touch(jobId)).thenReturn(true);
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly,
-                exchange1 -> exchange1.getIn().setHeader(Headers.JOB_ID, jobId));
-
-        assertEquals(Boolean.TRUE, exchange.getIn().getHeader(Headers.RESULT, Boolean.class), "Op result");
-        assertEquals(Long.valueOf(jobId), exchange.getIn().getHeader(Headers.JOB_ID, Long.class), "Job ID in exchange");
-        verify(client).touch(jobId);
-    }
-
-    @Test
-    void testTouchNoJobId() throws Exception {
-        endpoint.setCommand(BeanstalkCommand.touch);
-        Producer producer = endpoint.createProducer();
-        assertNotNull(producer, "Producer");
-        assertThat("Producer class", producer, instanceOf(BeanstalkProducer.class));
-        assertThat("Processor class", ((BeanstalkProducer) producer).getCommand(), instanceOf(TouchCommand.class));
-
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly, exchange1 -> {
-        });
-
-        assertTrue(exchange.isFailed(), "Exchange failed");
-
-        verify(client, never()).touch(anyLong());
-    }
-
-    @Test
-    void testHeaderOverride() throws Exception {
-        final long priority = 1020;
-        final int delay = 50;
-        final int timeToRun = 75;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final long jobId = 113;
-
-        when(client.put(priority, delay, timeToRun, payload)).thenReturn(jobId);
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().body().isEqualTo(testMessage);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isEqualTo(jobId);
-
-        direct.sendBodyAndHeader(testMessage, Headers.TIME_TO_RUN, timeToRun);
-        resultEndpoint.assertIsSatisfied();
-
-        final Long jobIdIn = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(jobIdIn, "Job ID in 'In' message");
-
-        verify(client).put(priority, delay, timeToRun, payload);
-    }
-
-    @Test
-    void test1BeanstalkException() throws Exception {
-        final long priority = 1020;
-        final int delay = 50;
-        final int timeToRun = 75;
-        final byte[] payload = Helper.stringToBytes(testMessage);
-        final long jobId = 113;
-
-        when(client.put(priority, delay, timeToRun, payload))
-                .thenThrow(new BeanstalkException("test"))
-                .thenReturn(jobId);
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().body().isEqualTo(testMessage);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isEqualTo(jobId);
-
-        direct.sendBodyAndHeader(testMessage, Headers.TIME_TO_RUN, timeToRun);
-        resultEndpoint.assertIsSatisfied();
-
-        final Long jobIdIn = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(jobIdIn, "Job ID in 'In' message");
-
-        verify(client, times(1)).close();
-        verify(client, times(2)).put(priority, delay, timeToRun, payload);
-    }
-
-    @Test
-    void test2BeanstalkException() {
-        final long jobId = 111;
-
-        when(client.touch(jobId))
-                .thenThrow(new BeanstalkException("test"));
-
-        endpoint.setCommand(BeanstalkCommand.touch);
-        final Exchange exchange = template.send(endpoint, ExchangePattern.InOnly,
-                exchange1 -> exchange1.getIn().setHeader(Headers.JOB_ID, jobId));
-
-        assertTrue(exchange.isFailed(), "Exchange failed");
-
-        verify(client, times(2)).touch(jobId);
-        verify(client, times(1)).close();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("direct:start").to("beanstalk:tube?jobPriority=1020&jobDelay=50&jobTimeToRun=65").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/TestExchangeCopyProcessor.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/TestExchangeCopyProcessor.java
deleted file mode 100644
index 13de1b3..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/TestExchangeCopyProcessor.java
+++ /dev/null
@@ -1,35 +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.beanstalk;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-
-public class TestExchangeCopyProcessor implements Processor {
-
-    private Exchange exchange;
-
-    @Override
-    public void process(Exchange exchange) {
-        this.exchange = exchange.copy();
-    }
-
-    public Exchange getExchangeCopy() {
-        return exchange;
-    }
-
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/BeanstalkCamelITSupport.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/BeanstalkCamelITSupport.java
deleted file mode 100644
index cad374b..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/BeanstalkCamelITSupport.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.beanstalk.integration;
-
-import com.surftools.BeanstalkClient.Client;
-import org.apache.camel.component.beanstalk.ConnectionSettings;
-import org.apache.camel.component.beanstalk.ConnectionSettingsFactory;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.BeforeEach;
-
-public abstract class BeanstalkCamelITSupport extends CamelTestSupport {
-    protected final ConnectionSettingsFactory connFactory = ConnectionSettingsFactory.DEFAULT;
-    protected final String tubeName = String.format("test%d", System.currentTimeMillis());
-    protected Client reader;
-    protected Client writer;
-
-    @BeforeEach
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-
-        String host = System.getProperty("beanstalk.host");
-        ConnectionSettings conn = connFactory.parseUri(host + "/" + tubeName);
-        writer = conn.newWritingClient();
-        reader = conn.newReadingClient(false);
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/BuryProducerIntegrationIT.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/BuryProducerIntegrationIT.java
deleted file mode 100644
index a3395e7..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/BuryProducerIntegrationIT.java
+++ /dev/null
@@ -1,87 +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.beanstalk.integration;
-
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@EnabledIfSystemProperty(named = "beanstalk.host", matches = ".*",
-                         disabledReason = "Requires a beanstalk server running")
-public class BuryProducerIntegrationIT extends BeanstalkCamelITSupport {
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate direct;
-
-    @Disabled("requires reserve - bury sequence")
-    @Test
-    void testBury() throws InterruptedException {
-        long jobId = writer.put(0, 0, 5, new byte[0]);
-        assertTrue(jobId > 0, "Valid Job Id");
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isNotNull();
-        resultEndpoint.allMessages().header(Headers.RESULT).isEqualTo(true);
-        direct.sendBodyAndHeader(null, Headers.JOB_ID, jobId);
-
-        assertMockEndpointsSatisfied();
-
-        final Long messageJobId = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(messageJobId, "Job ID in message");
-        assertEquals(jobId, messageJobId.longValue(), "Message Job ID equals");
-
-        final Job job = reader.reserve(0);
-        assertNull(job, "Beanstalk client has no message");
-
-        final Job buried = reader.peekBuried();
-        assertNotNull(buried, "Job in buried");
-        assertEquals(jobId, buried.getJobId(), "Buried job id");
-    }
-
-    @Test
-    void testNoJobId() {
-        assertThrows(CamelExecutionException.class, () -> {
-            direct.sendBody(new byte[0]);
-        });
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("direct:start").to("beanstalk:" + tubeName + "?command=bury").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/ConsumerIntegrationIT.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/ConsumerIntegrationIT.java
deleted file mode 100644
index 1ddc54c..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/ConsumerIntegrationIT.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.beanstalk.integration;
-
-import java.io.IOException;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.component.beanstalk.Helper;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-@EnabledIfSystemProperty(named = "beanstalk.host", matches = ".*",
-                         disabledReason = "Requires a beanstalk server running")
-public class ConsumerIntegrationIT extends BeanstalkCamelITSupport {
-    final String testMessage = "Hello, world!";
-
-    @EndpointInject("mock:result")
-    MockEndpoint result;
-
-    @Test
-    void testReceive() throws IOException, InterruptedException {
-        long prio = 0;
-        int ttr = 10;
-        final long jobId = writer.put(prio, 0, ttr, Helper.stringToBytes(testMessage));
-
-        result.expectedMessageCount(1);
-        result.expectedHeaderReceived(Headers.JOB_ID, jobId);
-        result.message(0).header(Exchange.CREATED_TIMESTAMP).isNotNull();
-        result.message(0).header(Headers.JOB_ID).isEqualTo(jobId);
-        result.message(0).header(Headers.PRIORITY).isEqualTo(prio);
-        result.message(0).header(Headers.TUBE).isEqualTo(tubeName);
-        result.message(0).header(Headers.STATE).isEqualTo("reserved");
-        result.message(0).header(Headers.AGE).isGreaterThan(0);
-        result.message(0).header(Headers.TIME_LEFT).isGreaterThan(0);
-        result.message(0).header(Headers.TIMEOUTS).isNotNull();
-        result.message(0).header(Headers.RELEASES).isNotNull();
-        result.message(0).header(Headers.BURIES).isNotNull();
-        result.message(0).header(Headers.KICKS).isNotNull();
-        result.message(0).body().isEqualTo(testMessage);
-        result.assertIsSatisfied(500);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("beanstalk:" + tubeName).to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/DeleteProducerIntegrationIT.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/DeleteProducerIntegrationIT.java
deleted file mode 100644
index eab830e..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/DeleteProducerIntegrationIT.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.beanstalk.integration;
-
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@EnabledIfSystemProperty(named = "beanstalk.host", matches = ".*",
-                         disabledReason = "Requires a beanstalk server running")
-public class DeleteProducerIntegrationIT extends BeanstalkCamelITSupport {
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate direct;
-
-    @Test
-    void testDelete() throws InterruptedException {
-        long jobId = writer.put(0, 0, 5, new byte[0]);
-        assertTrue(jobId > 0, "Valid Job Id");
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isNotNull();
-        resultEndpoint.allMessages().header(Headers.RESULT).isEqualTo(true);
-        direct.sendBodyAndHeader(null, Headers.JOB_ID, jobId);
-
-        assertMockEndpointsSatisfied();
-
-        final Long messageJobId = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(messageJobId, "Job ID in message");
-        assertEquals(jobId, messageJobId.longValue(), "Message Job ID equals");
-
-        final Job job = reader.peek(jobId);
-        assertNull(job, "Job has been deleted");
-    }
-
-    @Test
-    void testNoJobId() {
-        assertThrows(CamelExecutionException.class, () -> {
-            direct.sendBody(new byte[0]);
-        });
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("direct:start").to("beanstalk:" + tubeName + "?command=delete").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/PutProducerIntegrationIT.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/PutProducerIntegrationIT.java
deleted file mode 100644
index 3749527..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/PutProducerIntegrationIT.java
+++ /dev/null
@@ -1,114 +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.beanstalk.integration;
-
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-@EnabledIfSystemProperty(named = "beanstalk.host", matches = ".*",
-                         disabledReason = "Requires a beanstalk server running")
-public class PutProducerIntegrationIT extends BeanstalkCamelITSupport {
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate direct;
-
-    private final String testMessage = "Hello, world!";
-
-    @Test
-    void testPut() throws InterruptedException {
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isNotNull();
-        direct.sendBody(testMessage);
-
-        resultEndpoint.assertIsSatisfied();
-
-        final Long jobId = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(jobId, "Job ID in 'In' message");
-
-        final Job job = reader.reserve(5);
-        assertNotNull(job, "Beanstalk client got message");
-        assertEquals(testMessage, new String(job.getData()), "Job body from the server");
-        assertEquals(jobId.longValue(), job.getJobId(), "Job ID from the server");
-        reader.delete(jobId);
-    }
-
-    @Test
-    void testOut() {
-        final Endpoint endpoint = context.getEndpoint("beanstalk:" + tubeName);
-        final Exchange exchange
-                = template.send(endpoint, ExchangePattern.InOut, exchange1 -> exchange1.getIn().setBody(testMessage));
-
-        final Message out = exchange.getMessage();
-        assertNotNull(out, "Out message");
-
-        final Long jobId = out.getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(jobId, "Job ID in 'Out' message");
-
-        final Job job = reader.reserve(5);
-        assertNotNull(job, "Beanstalk client got message");
-        assertEquals(testMessage, new String(job.getData()), "Job body from the server");
-        assertEquals(jobId.longValue(), job.getJobId(), "Job ID from the server");
-        reader.delete(jobId);
-    }
-
-    @Test
-    void testDelay() throws InterruptedException {
-        final byte[] testBytes = new byte[0];
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isNotNull();
-        resultEndpoint.expectedBodiesReceived(testBytes);
-        direct.sendBodyAndHeader(testBytes, Headers.DELAY, 10);
-
-        resultEndpoint.assertIsSatisfied();
-
-        final Long jobId = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(jobId, "Job ID in message");
-
-        final Job job = reader.reserve(0);
-        assertNull(job, "Beanstalk client has no message");
-        reader.delete(jobId);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("direct:start").to("beanstalk:" + tubeName + "?jobPriority=1000&jobTimeToRun=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/ReleaseProducerIntegrationIT.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/ReleaseProducerIntegrationIT.java
deleted file mode 100644
index 1910df4..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/ReleaseProducerIntegrationIT.java
+++ /dev/null
@@ -1,87 +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.beanstalk.integration;
-
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@EnabledIfSystemProperty(named = "beanstalk.host", matches = ".*",
-                         disabledReason = "Requires a beanstalk server running")
-public class ReleaseProducerIntegrationIT extends BeanstalkCamelITSupport {
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate direct;
-
-    @Disabled("requires reserve - release sequence")
-    @Test
-    void testBury() throws InterruptedException {
-        long jobId = writer.put(0, 0, 5, new byte[0]);
-        assertTrue(jobId > 0, "Valid Job Id");
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isNotNull();
-        resultEndpoint.allMessages().header(Headers.RESULT).isEqualTo(true);
-        direct.sendBodyAndHeader(null, Headers.JOB_ID, jobId);
-
-        assertMockEndpointsSatisfied();
-
-        final Long messageJobId = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(messageJobId, "Job ID in message");
-        assertEquals(jobId, messageJobId.longValue(), "Message Job ID equals");
-
-        final Job job = reader.reserve(0);
-        assertNull(job, "Beanstalk client has no message");
-
-        final Job buried = reader.peekBuried();
-        assertNotNull(buried, "Job in buried");
-        assertEquals(jobId, buried.getJobId(), "Buried job id");
-    }
-
-    @Test
-    void testNoJobId() {
-        assertThrows(CamelExecutionException.class, () -> {
-            direct.sendBody(new byte[0]);
-        });
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("direct:start").to("beanstalk:" + tubeName + "?command=release").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/TouchProducerIntegrationIT.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/TouchProducerIntegrationIT.java
deleted file mode 100644
index 5c40ca6..0000000
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/integration/TouchProducerIntegrationIT.java
+++ /dev/null
@@ -1,87 +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.beanstalk.integration;
-
-import com.surftools.BeanstalkClient.Job;
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.beanstalk.Headers;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@EnabledIfSystemProperty(named = "beanstalk.host", matches = ".*",
-                         disabledReason = "Requires a beanstalk server running")
-public class TouchProducerIntegrationIT extends BeanstalkCamelITSupport {
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate direct;
-
-    @Disabled("requires reserve - touch sequence")
-    @Test
-    void testBury() throws InterruptedException {
-        long jobId = writer.put(0, 0, 5, new byte[0]);
-        assertTrue(jobId > 0, "Valid Job Id");
-
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.allMessages().header(Headers.JOB_ID).isNotNull();
-        resultEndpoint.allMessages().header(Headers.RESULT).isEqualTo(true);
-        direct.sendBodyAndHeader(null, Headers.JOB_ID, jobId);
-
-        assertMockEndpointsSatisfied();
-
-        final Long messageJobId = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader(Headers.JOB_ID, Long.class);
-        assertNotNull(messageJobId, "Job ID in message");
-        assertEquals(jobId, messageJobId.longValue(), "Message Job ID equals");
-
-        final Job job = reader.reserve(0);
-        assertNull(job, "Beanstalk client has no message");
-
-        final Job buried = reader.peekBuried();
-        assertNotNull(buried, "Job in buried");
-        assertEquals(jobId, buried.getJobId(), "Buried job id");
-    }
-
-    @Test
-    void testNoJobId() {
-        assertThrows(CamelExecutionException.class, () -> {
-            direct.sendBody(new byte[0]);
-        });
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("direct:start").to("beanstalk:" + tubeName + "?command=touch").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-beanstalk/src/test/resources/log4j2.properties b/components/camel-beanstalk/src/test/resources/log4j2.properties
deleted file mode 100644
index 606df42..0000000
--- a/components/camel-beanstalk/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,28 +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.
-## ---------------------------------------------------------------------------
-
-appender.console.type = Console
-appender.console.name = console
-appender.console.layout.type = PatternLayout
-appender.console.layout.pattern = %d %-5p %c{1} - %m %n
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-beanstalk-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d %-5p %c{1} - %m %n
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
diff --git a/components/pom.xml b/components/pom.xml
index dac6dab..5875d72 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -103,7 +103,6 @@
         <module>camel-base64</module>
         <module>camel-bean-validator</module>
         <module>camel-beanio</module>
-        <module>camel-beanstalk</module>
         <module>camel-bindy</module>
         <module>camel-bonita</module>
         <module>camel-box</module>
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 f1f2fa3..a13ec42 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
@@ -42,7 +42,6 @@ azure-storage-datalake
 azure-storage-queue
 bean
 bean-validator
-beanstalk
 bonita
 box
 braintree
diff --git a/docs/components/modules/ROOT/examples/json/beanstalk.json b/docs/components/modules/ROOT/examples/json/beanstalk.json
deleted file mode 120000
index 70b8cde..0000000
--- a/docs/components/modules/ROOT/examples/json/beanstalk.json
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../components/camel-beanstalk/src/generated/resources/org/apache/camel/component/beanstalk/beanstalk.json
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 7654775..9747226 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -47,7 +47,6 @@
 *** xref:azure-storage-queue-component.adoc[Azure Storage Queue Service]
 ** xref:bean-component.adoc[Bean]
 ** xref:bean-validator-component.adoc[Bean Validator]
-** xref:beanstalk-component.adoc[Beanstalk]
 ** xref:bonita-component.adoc[Bonita]
 ** xref:box-component.adoc[Box]
 ** xref:braintree-component.adoc[Braintree]
diff --git a/docs/components/modules/ROOT/pages/beanstalk-component.adoc b/docs/components/modules/ROOT/pages/beanstalk-component.adoc
deleted file mode 120000
index 435f694..0000000
--- a/docs/components/modules/ROOT/pages/beanstalk-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-beanstalk/src/main/docs/beanstalk-component.adoc
\ No newline at end of file
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java
index 7582d00..e456fb0 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java
@@ -35,7 +35,6 @@ public final class EndpointConsumerDeserializersResolver implements YamlDeserial
             case "azure-storage-blob":
             case "azure-storage-datalake":
             case "azure-storage-queue":
-            case "beanstalk":
             case "box":
             case "browse":
             case "cmis":
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java
index b61d9e0..8fae556 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java
@@ -57,7 +57,6 @@ public final class EndpointProducerDeserializersResolver implements YamlDeserial
             case "azure-storage-queue":
             case "bean":
             case "bean-validator":
-            case "beanstalk":
             case "bonita":
             case "box":
             case "braintree":
diff --git a/parent/pom.xml b/parent/pom.xml
index d138752..319d2b5 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -95,7 +95,6 @@
         <azure-storage-datalake-version>12.7.1</azure-storage-datalake-version>
         <azure-storage-queue-version>12.11.4</azure-storage-queue-version>
         <beanio-version>2.1.0</beanio-version>
-        <beanstalkd-client-version>1.4.6</beanstalkd-client-version>
         <bouncycastle-version>1.70</bouncycastle-version>
         <box-java-sdk-version>2.58.0</box-java-sdk-version>
         <braintree-gateway-version>3.14.0</braintree-gateway-version>