You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/10/26 10:26:23 UTC

[camel-quarkus] branch master updated: Leverage camel-platform-http-vertx in platform-http extension

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

jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/master by this push:
     new e5cdc91  Leverage camel-platform-http-vertx in platform-http extension
e5cdc91 is described below

commit e5cdc9115e8a299f118b08fc190549f0c00b7383
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Oct 26 08:26:44 2020 +0000

    Leverage camel-platform-http-vertx in platform-http extension
    
    Fixes #1144
---
 .../core/deployment/AttachmentsProcessor.java      |  47 --
 .../deployment/spi/UploadAttacherBuildItem.java    |  46 --
 .../quarkus/core/CoreAttachmentsRecorder.java      |  41 --
 .../apache/camel/quarkus/core/UploadAttacher.java  |  38 --
 .../deployment/AttachmentsProcessor.java           |  19 -
 .../component/attachments/AttachmentsRecorder.java |  43 --
 .../component/attachments/CamelFileDataSource.java |  60 ---
 extensions/platform-http/deployment/pom.xml        |   4 +
 .../http/deployment/PlatformHttpProcessor.java     |  36 +-
 extensions/platform-http/runtime/pom.xml           |   6 +-
 .../http/runtime/PlatformHttpRecorder.java         |  25 +-
 .../http/runtime/QuarkusPlatformHttpConsumer.java  | 510 ---------------------
 .../http/runtime/QuarkusPlatformHttpEngine.java    |  51 ---
 .../platform/http/it/PlatformHttpResource.java     |   5 -
 .../http/server/it/PlatformHttpEngineTest.java     |   7 +-
 integration-tests/platform-http/pom.xml            |  17 -
 poms/bom/pom.xml                                   |   2 +-
 17 files changed, 49 insertions(+), 908 deletions(-)

diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/AttachmentsProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/AttachmentsProcessor.java
deleted file mode 100644
index d6aa4c2..0000000
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/AttachmentsProcessor.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.quarkus.core.deployment;
-
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Overridable;
-import io.quarkus.deployment.annotations.Record;
-import org.apache.camel.quarkus.core.CoreAttachmentsRecorder;
-import org.apache.camel.quarkus.core.UploadAttacher;
-import org.apache.camel.quarkus.core.deployment.spi.UploadAttacherBuildItem;
-
-/**
- * Build steps related to Camel Attachments.
- */
-public class AttachmentsProcessor {
-
-    /**
-     * Produces an {@link UploadAttacherBuildItem} holding a no-op {@link UploadAttacher}.
-     * <p>
-     * Note that this {@link BuildStep} is effective only if {@code camel-quarkus-attachments} extension is not in
-     * the class path.
-     *
-     * @param  recorder the {@link CoreAttachmentsRecorder}
-     * @return          a new {@link UploadAttacherBuildItem}
-     */
-    @Overridable
-    @Record(value = ExecutionTime.STATIC_INIT, optional = true)
-    @BuildStep
-    UploadAttacherBuildItem uploadAttacher(CoreAttachmentsRecorder recorder) {
-        return new UploadAttacherBuildItem(recorder.createNoOpUploadAttacher());
-    }
-}
diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/UploadAttacherBuildItem.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/UploadAttacherBuildItem.java
deleted file mode 100644
index a7eaa35..0000000
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/UploadAttacherBuildItem.java
+++ /dev/null
@@ -1,46 +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.quarkus.core.deployment.spi;
-
-import io.quarkus.builder.item.SimpleBuildItem;
-import io.quarkus.runtime.RuntimeValue;
-import org.apache.camel.quarkus.core.UploadAttacher;
-
-/**
- * Holds the {@link UploadAttacher} {@link RuntimeValue}.
- * <p>
- * There are two producers for this item:
- * <ul>
- * <li>The default one producing a no-op {@link UploadAttacher}
- * <li>
- * <li>The "real" one available in {@code camel-quarkus-attachments}
- * extension</li>
- * <ul>
- * The "real" one is used only if the {@code camel-quarkus-attachments}
- * extension is present in the class path.
- */
-public final class UploadAttacherBuildItem extends SimpleBuildItem {
-    private final RuntimeValue<UploadAttacher> instance;
-
-    public UploadAttacherBuildItem(RuntimeValue<UploadAttacher> instance) {
-        this.instance = instance;
-    }
-
-    public RuntimeValue<UploadAttacher> getInstance() {
-        return instance;
-    }
-}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CoreAttachmentsRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CoreAttachmentsRecorder.java
deleted file mode 100644
index f2ecdf1..0000000
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CoreAttachmentsRecorder.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.quarkus.core;
-
-import java.io.File;
-
-import io.quarkus.runtime.RuntimeValue;
-import io.quarkus.runtime.annotations.Recorder;
-import org.apache.camel.Message;
-
-@Recorder
-public class CoreAttachmentsRecorder {
-
-    public RuntimeValue<UploadAttacher> createNoOpUploadAttacher() {
-        return new RuntimeValue<>((File localFile, String fileName, Message message) -> {
-            throw new RuntimeException(
-                    String.format(
-                            "File %s will not be attached to message %s because camel-quarkus-attachments is not in the class path."
-                                    + " You have several options to handle this situation:"
-                                    + " (a) Add camel-quarkus-attachments dependency to your project if you want Camel to attach the uploads to Camel messages"
-                                    + " (b) Disable the uploads altogether by setting quarkus.http.body.handle-file-uploads = false in your application.proprties"
-                                    + " (c) Ignore this message because it is perhaps caused by clients out of your control",
-                            fileName,
-                            message));
-        });
-    }
-}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/UploadAttacher.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/UploadAttacher.java
deleted file mode 100644
index 89a930a..0000000
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/UploadAttacher.java
+++ /dev/null
@@ -1,38 +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.quarkus.core;
-
-import java.io.File;
-
-import org.apache.camel.Message;
-
-/**
- * Attaches file uploads to Camel {@link Message}s.
- */
-public interface UploadAttacher {
-
-    /**
-     * Attach the uploaded file represented by the given {@code localFile} and {@code fileName} to the given
-     * {@code message}
-     *
-     * @param localFile the uploaded file stored locally
-     * @param fileName  the name of the upload as sent by the client
-     * @param message   the {@link Message} to attach the upload to
-     */
-    void attachUpload(File localFile, String fileName, Message message);
-
-}
diff --git a/extensions/attachments/deployment/src/main/java/org/apache/camel/quarkus/component/attachments/deployment/AttachmentsProcessor.java b/extensions/attachments/deployment/src/main/java/org/apache/camel/quarkus/component/attachments/deployment/AttachmentsProcessor.java
index 79a36d3..8454f92 100644
--- a/extensions/attachments/deployment/src/main/java/org/apache/camel/quarkus/component/attachments/deployment/AttachmentsProcessor.java
+++ b/extensions/attachments/deployment/src/main/java/org/apache/camel/quarkus/component/attachments/deployment/AttachmentsProcessor.java
@@ -17,12 +17,7 @@
 package org.apache.camel.quarkus.component.attachments.deployment;
 
 import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import org.apache.camel.quarkus.component.attachments.AttachmentsRecorder;
-import org.apache.camel.quarkus.core.UploadAttacher;
-import org.apache.camel.quarkus.core.deployment.spi.UploadAttacherBuildItem;
 
 class AttachmentsProcessor {
 
@@ -32,18 +27,4 @@ class AttachmentsProcessor {
     FeatureBuildItem feature() {
         return new FeatureBuildItem(FEATURE);
     }
-
-    /**
-     * Produces the "real" {@link UploadAttacher} thus overriding the default no-op one produced by
-     * {@code camel-quarkus-core-deployment}.
-     *
-     * @param  recorder the {@link AttachmentsRecorder}
-     * @return          a new {@link UploadAttacherBuildItem}
-     */
-    @Record(ExecutionTime.STATIC_INIT)
-    @BuildStep
-    UploadAttacherBuildItem uploadAttacher(AttachmentsRecorder recorder) {
-        return new UploadAttacherBuildItem(recorder.creatUploadAttacher());
-    }
-
 }
diff --git a/extensions/attachments/runtime/src/main/java/org/apache/camel/quarkus/component/attachments/AttachmentsRecorder.java b/extensions/attachments/runtime/src/main/java/org/apache/camel/quarkus/component/attachments/AttachmentsRecorder.java
deleted file mode 100644
index 646a0c8..0000000
--- a/extensions/attachments/runtime/src/main/java/org/apache/camel/quarkus/component/attachments/AttachmentsRecorder.java
+++ /dev/null
@@ -1,43 +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.quarkus.component.attachments;
-
-import java.io.File;
-
-import javax.activation.DataHandler;
-
-import io.quarkus.runtime.RuntimeValue;
-import io.quarkus.runtime.annotations.Recorder;
-import org.apache.camel.Message;
-import org.apache.camel.attachment.AttachmentMessage;
-import org.apache.camel.quarkus.core.UploadAttacher;
-import org.jboss.logging.Logger;
-
-@Recorder
-public class AttachmentsRecorder {
-
-    private static final Logger LOG = Logger.getLogger(AttachmentMessage.class);
-
-    public RuntimeValue<UploadAttacher> creatUploadAttacher() {
-        return new RuntimeValue<>((File localFile, String fileName, Message message) -> {
-            LOG.tracef("Attaching file %s to message %s", fileName, message);
-            final AttachmentMessage am = message.getExchange().getMessage(AttachmentMessage.class);
-            am.addAttachment(fileName, new DataHandler(new CamelFileDataSource(localFile, fileName)));
-        });
-    }
-
-}
diff --git a/extensions/attachments/runtime/src/main/java/org/apache/camel/quarkus/component/attachments/CamelFileDataSource.java b/extensions/attachments/runtime/src/main/java/org/apache/camel/quarkus/component/attachments/CamelFileDataSource.java
deleted file mode 100644
index 273b1a8..0000000
--- a/extensions/attachments/runtime/src/main/java/org/apache/camel/quarkus/component/attachments/CamelFileDataSource.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.attachments;
-
-import java.io.File;
-
-import javax.activation.FileDataSource;
-import javax.activation.FileTypeMap;
-
-/**
- * Copied from {@code camel-http-common} as we cannot depend on it here because
- * we do not want to depend on the {@code servlet-api}.
- */
-public class CamelFileDataSource extends FileDataSource {
-    private final String fileName;
-    private FileTypeMap typeMap;
-
-    public CamelFileDataSource(File file, String fileName) {
-        super(file);
-        this.fileName = fileName;
-    }
-
-    @Override
-    public String getContentType() {
-        if (typeMap == null) {
-            return FileTypeMap.getDefaultFileTypeMap().getContentType(fileName);
-        } else {
-            return typeMap.getContentType(fileName);
-        }
-    }
-
-    @Override
-    public void setFileTypeMap(FileTypeMap map) {
-        typeMap = map;
-    }
-
-    @Override
-    public String getName() {
-        if (fileName != null) {
-            return fileName;
-        } else {
-            return super.getName();
-        }
-    }
-
-}
diff --git a/extensions/platform-http/deployment/pom.xml b/extensions/platform-http/deployment/pom.xml
index 796f446..848cd64 100644
--- a/extensions/platform-http/deployment/pom.xml
+++ b/extensions/platform-http/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-attachments-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-platform-http</artifactId>
         </dependency>
 
diff --git a/extensions/platform-http/deployment/src/main/java/org/apache/camel/quarkus/component/platform/http/deployment/PlatformHttpProcessor.java b/extensions/platform-http/deployment/src/main/java/org/apache/camel/quarkus/component/platform/http/deployment/PlatformHttpProcessor.java
index 83deb21..61c58ee 100644
--- a/extensions/platform-http/deployment/src/main/java/org/apache/camel/quarkus/component/platform/http/deployment/PlatformHttpProcessor.java
+++ b/extensions/platform-http/deployment/src/main/java/org/apache/camel/quarkus/component/platform/http/deployment/PlatformHttpProcessor.java
@@ -16,22 +16,22 @@
  */
 package org.apache.camel.quarkus.component.platform.http.deployment;
 
-import java.util.Collections;
-
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.vertx.deployment.VertxBuildItem;
 import io.quarkus.vertx.http.deployment.BodyHandlerBuildItem;
 import io.quarkus.vertx.http.deployment.VertxWebRouterBuildItem;
+import io.vertx.ext.web.Router;
 import org.apache.camel.component.platform.http.PlatformHttpComponent;
 import org.apache.camel.component.platform.http.PlatformHttpConstants;
+import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpEngine;
+import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpRouter;
 import org.apache.camel.quarkus.component.platform.http.runtime.PlatformHttpRecorder;
-import org.apache.camel.quarkus.component.platform.http.runtime.QuarkusPlatformHttpEngine;
 import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBeanBuildItem;
 import org.apache.camel.quarkus.core.deployment.spi.CamelServiceFilter;
 import org.apache.camel.quarkus.core.deployment.spi.CamelServiceFilterBuildItem;
-import org.apache.camel.quarkus.core.deployment.spi.UploadAttacherBuildItem;
 
 class PlatformHttpProcessor {
     private static final String FEATURE = "camel-platform-http";
@@ -52,29 +52,33 @@ class PlatformHttpProcessor {
 
     @Record(ExecutionTime.RUNTIME_INIT)
     @BuildStep
-    PlatformHttpEngineBuildItem platformHttpEngine(
-            PlatformHttpRecorder recorder,
-            VertxWebRouterBuildItem router,
-            BodyHandlerBuildItem bodyHandler,
-            UploadAttacherBuildItem uploadAttacher) {
-
-        return new PlatformHttpEngineBuildItem(
-                recorder.createEngine(
-                        router.getRouter(),
-                        Collections.singletonList(bodyHandler.getHandler()),
-                        uploadAttacher.getInstance()));
+    PlatformHttpEngineBuildItem platformHttpEngine(PlatformHttpRecorder recorder) {
+        return new PlatformHttpEngineBuildItem(recorder.createEngine());
     }
 
     @BuildStep
     CamelRuntimeBeanBuildItem platformHttpEngineBean(PlatformHttpEngineBuildItem engine) {
         return new CamelRuntimeBeanBuildItem(
                 PlatformHttpConstants.PLATFORM_HTTP_ENGINE_NAME,
-                QuarkusPlatformHttpEngine.class.getName(),
+                VertxPlatformHttpEngine.class.getName(),
                 engine.getInstance());
     }
 
     @Record(ExecutionTime.RUNTIME_INIT)
     @BuildStep
+    CamelRuntimeBeanBuildItem platformHttpRouterBean(
+            VertxBuildItem vertx,
+            VertxWebRouterBuildItem router,
+            BodyHandlerBuildItem bodyHandler,
+            PlatformHttpRecorder recorder) {
+        return new CamelRuntimeBeanBuildItem(
+                VertxPlatformHttpRouter.PLATFORM_HTTP_ROUTER_NAME,
+                Router.class.getName(),
+                recorder.createVertxPlatformHttpRouter(vertx.getVertx(), router.getRouter(), bodyHandler.getHandler()));
+    }
+
+    @Record(ExecutionTime.RUNTIME_INIT)
+    @BuildStep
     CamelRuntimeBeanBuildItem platformHttpComponentBean(PlatformHttpRecorder recorder, PlatformHttpEngineBuildItem engine) {
         return new CamelRuntimeBeanBuildItem(
                 PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME,
diff --git a/extensions/platform-http/runtime/pom.xml b/extensions/platform-http/runtime/pom.xml
index 3e1864d..014de72 100644
--- a/extensions/platform-http/runtime/pom.xml
+++ b/extensions/platform-http/runtime/pom.xml
@@ -52,8 +52,12 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-attachments</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-platform-http</artifactId>
+            <artifactId>camel-platform-http-vertx</artifactId>
         </dependency>
 
         <dependency>
diff --git a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/PlatformHttpRecorder.java b/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/PlatformHttpRecorder.java
index a33a277..29b7351 100644
--- a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/PlatformHttpRecorder.java
+++ b/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/PlatformHttpRecorder.java
@@ -16,30 +16,37 @@
  */
 package org.apache.camel.quarkus.component.platform.http.runtime;
 
-import java.util.List;
-
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
 import io.vertx.core.Handler;
+import io.vertx.core.Vertx;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
 import org.apache.camel.component.platform.http.PlatformHttpComponent;
 import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
-import org.apache.camel.quarkus.core.UploadAttacher;
+import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpEngine;
+import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpRouter;
 
 @Recorder
 public class PlatformHttpRecorder {
-    public RuntimeValue<PlatformHttpEngine> createEngine(
-            RuntimeValue<Router> router,
-            List<Handler<RoutingContext>> handlers,
-            RuntimeValue<UploadAttacher> uploadAttacher) {
-        return new RuntimeValue<>(new QuarkusPlatformHttpEngine(router.getValue(), handlers, uploadAttacher.getValue()));
+    public RuntimeValue<PlatformHttpEngine> createEngine() {
+        return new RuntimeValue<>(new VertxPlatformHttpEngine());
     }
 
     public RuntimeValue<PlatformHttpComponent> createComponent(RuntimeValue<PlatformHttpEngine> engine) {
         PlatformHttpComponent component = new PlatformHttpComponent();
         component.setEngine(engine.getValue());
-
         return new RuntimeValue<>(component);
     }
+
+    public RuntimeValue<VertxPlatformHttpRouter> createVertxPlatformHttpRouter(RuntimeValue<Vertx> vertx,
+            RuntimeValue<Router> router, Handler<RoutingContext> handler) {
+        VertxPlatformHttpRouter vertxPlatformHttpRouter = new VertxPlatformHttpRouter(vertx.getValue(), router.getValue()) {
+            @Override
+            public Handler<RoutingContext> bodyHandler() {
+                return handler;
+            }
+        };
+        return new RuntimeValue<>(vertxPlatformHttpRouter);
+    }
 }
diff --git a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java b/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java
deleted file mode 100644
index 0cc129e..0000000
--- a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java
+++ /dev/null
@@ -1,510 +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.quarkus.component.platform.http.runtime;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import io.vertx.core.Handler;
-import io.vertx.core.MultiMap;
-import io.vertx.core.Vertx;
-import io.vertx.core.buffer.Buffer;
-import io.vertx.core.http.HttpMethod;
-import io.vertx.core.http.HttpServerRequest;
-import io.vertx.core.http.HttpServerResponse;
-import io.vertx.ext.web.FileUpload;
-import io.vertx.ext.web.Route;
-import io.vertx.ext.web.Router;
-import io.vertx.ext.web.RoutingContext;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.NoTypeConversionAvailableException;
-import org.apache.camel.Processor;
-import org.apache.camel.TypeConversionException;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.component.platform.http.PlatformHttpComponent;
-import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
-import org.apache.camel.component.platform.http.spi.Method;
-import org.apache.camel.quarkus.core.UploadAttacher;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.support.DefaultConsumer;
-import org.apache.camel.support.DefaultMessage;
-import org.apache.camel.support.ExchangeHelper;
-import org.apache.camel.support.MessageHelper;
-import org.apache.camel.support.ObjectHelper;
-import org.apache.camel.util.FileUtil;
-import org.jboss.logging.Logger;
-
-/**
- * A Quarkus specific {@link Consumer} for the {@link PlatformHttpComponent}.
- */
-public class QuarkusPlatformHttpConsumer extends DefaultConsumer {
-    private static final Logger LOG = Logger.getLogger(QuarkusPlatformHttpConsumer.class);
-
-    private final Router router;
-    private final List<Handler<RoutingContext>> handlers;
-    private final String fileNameExtWhitelist;
-    private final UploadAttacher uploadAttacher;
-    private final Pattern PATH_PARAMETER_PATTERN = Pattern.compile("\\{([^/}]+)\\}");
-    private Route route;
-
-    public QuarkusPlatformHttpConsumer(PlatformHttpEndpoint endpoint, Processor processor, Router router,
-            List<Handler<RoutingContext>> handlers, UploadAttacher uploadAttacher) {
-        super(endpoint, processor);
-        this.router = router;
-        this.handlers = handlers;
-        String list = endpoint.getFileNameExtWhitelist();
-        this.fileNameExtWhitelist = list == null ? list : list.toLowerCase(Locale.US);
-        this.uploadAttacher = uploadAttacher;
-    }
-
-    static Object toHttpResponse(HttpServerResponse response, Message message, HeaderFilterStrategy headerFilterStrategy) {
-        final Exchange exchange = message.getExchange();
-
-        final int code = determineResponseCode(exchange, message.getBody());
-        response.setStatusCode(code);
-
-        final TypeConverter tc = exchange.getContext().getTypeConverter();
-
-        // copy headers from Message to Response
-        if (headerFilterStrategy != null) {
-            for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) {
-                final String key = entry.getKey();
-                final Object value = entry.getValue();
-                // use an iterator as there can be multiple values. (must not use a delimiter)
-                final Iterator<?> it = ObjectHelper.createIterator(value, null);
-                String firstValue = null;
-                List<String> values = null;
-                while (it.hasNext()) {
-                    final String headerValue = tc.convertTo(String.class, it.next());
-                    if (headerValue != null
-                            && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, exchange)) {
-                        if (firstValue == null) {
-                            firstValue = headerValue;
-                        } else {
-                            if (values == null) {
-                                values = new ArrayList<String>();
-                                values.add(firstValue);
-                            }
-                            values.add(headerValue);
-                        }
-                    }
-                }
-                if (values != null) {
-                    response.putHeader(key, values);
-                } else if (firstValue != null) {
-                    response.putHeader(key, firstValue);
-                }
-            }
-        }
-
-        Object body = message.getBody();
-        final Exception exception = exchange.getException();
-
-        if (exception != null) {
-            // we failed due an exception so print it as plain text
-            final StringWriter sw = new StringWriter();
-            final PrintWriter pw = new PrintWriter(sw);
-            exception.printStackTrace(pw);
-
-            // the body should then be the stacktrace
-            body = ByteBuffer.wrap(sw.toString().getBytes(StandardCharsets.UTF_8));
-            // force content type to be text/plain as that is what the stacktrace is
-            message.setHeader(Exchange.CONTENT_TYPE, "text/plain; charset=utf-8");
-
-            // and mark the exception as failure handled, as we handled it by returning it as the response
-            ExchangeHelper.setFailureHandled(exchange);
-        }
-
-        // set the content-length if it can be determined, or chunked encoding
-        final Integer length = determineContentLength(exchange, body);
-        if (length != null) {
-            response.putHeader("Content-Length", String.valueOf(length));
-        } else {
-            response.setChunked(true);
-        }
-
-        // set the content type in the response.
-        final String contentType = MessageHelper.getContentType(message);
-        if (contentType != null) {
-            // set content-type
-            response.putHeader("Content-Type", contentType);
-        }
-        return body;
-    }
-
-    /*
-     * Copied from org.apache.camel.component.platform.http.vertx.VertxPlatformHttpSupport.determineContentLength(Exchange, Object)
-     */
-    static Integer determineContentLength(Exchange camelExchange, Object body) {
-        if (body instanceof byte[]) {
-            return ((byte[]) body).length;
-        } else if (body instanceof ByteBuffer) {
-            return ((ByteBuffer) body).remaining();
-        }
-        return null;
-    }
-
-    /*
-     * Copied from org.apache.camel.http.common.DefaultHttpBinding.determineResponseCode(Exchange, Object)
-     * If DefaultHttpBinding.determineResponseCode(Exchange, Object) is moved to a module without the servlet-api
-     * dependency we could eventually consume it from there.
-     */
-    static int determineResponseCode(Exchange camelExchange, Object body) {
-        boolean failed = camelExchange.isFailed();
-        int defaultCode = failed ? 500 : 200;
-
-        Message message = camelExchange.getMessage();
-        Integer currentCode = message.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
-        int codeToUse = currentCode == null ? defaultCode : currentCode;
-
-        if (codeToUse != 500) {
-            if ((body == null) || (body instanceof String && ((String) body).trim().isEmpty())) {
-                // no content
-                codeToUse = currentCode == null ? 204 : currentCode;
-            }
-        }
-
-        return codeToUse;
-    }
-
-    static void writeResponse(RoutingContext ctx, Exchange camelExchange, HeaderFilterStrategy headerFilterStrategy) {
-        final Object body = toHttpResponse(ctx.response(), camelExchange.getMessage(), headerFilterStrategy);
-
-        final HttpServerResponse response = ctx.response();
-        if (body == null) {
-            LOG.tracef("No payload to send as reply for exchange: %s", camelExchange);
-            response.end();
-        } else if (body instanceof String) {
-            response.end((String) body);
-        } else if (body instanceof InputStream) {
-            final byte[] bytes = new byte[4096];
-            try (InputStream in = (InputStream) body) {
-                int len;
-                while ((len = in.read(bytes)) >= 0) {
-                    final Buffer b = Buffer.buffer(len);
-                    b.appendBytes(bytes, 0, len);
-                    response.write(b);
-                }
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-            response.end();
-        } else {
-            final TypeConverter tc = camelExchange.getContext().getTypeConverter();
-            try {
-                final ByteBuffer bb = tc.mandatoryConvertTo(ByteBuffer.class, body);
-                final Buffer b = Buffer.buffer(bb.capacity());
-                b.setBytes(0, bb);
-                response.end(b);
-            } catch (TypeConversionException | NoTypeConversionAvailableException e) {
-                throw new RuntimeException(e);
-            }
-        }
-
-    }
-
-    static void populateCamelHeaders(
-            RoutingContext ctx,
-            Map<String, Object> headersMap,
-            Exchange exchange,
-            HeaderFilterStrategy headerFilterStrategy) {
-
-        final HttpServerRequest request = ctx.request();
-        headersMap.put(Exchange.HTTP_PATH, request.path());
-
-        if (headerFilterStrategy != null) {
-            final MultiMap requestHeaders = request.headers();
-            final String authz = requestHeaders.get("authorization");
-            // store a special header that this request was authenticated using HTTP Basic
-            if (authz != null && authz.trim().startsWith("Basic")) {
-                if (!headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) {
-                    appendHeader(headersMap, Exchange.AUTHENTICATION, "Basic");
-                }
-            }
-            for (String name : requestHeaders.names()) {
-                // add the headers one by one, and use the header filter strategy
-                for (String value : requestHeaders.getAll(name)) {
-                    if (!headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) {
-                        appendHeader(headersMap, name.toString(), value);
-                    }
-                }
-            }
-
-            // process uri parameters as headers
-            final MultiMap pathParameters = ctx.queryParams();
-            // continue if the map is not empty, otherwise there are no params
-            if (!pathParameters.isEmpty()) {
-                for (String name : pathParameters.names()) {
-                    for (String value : pathParameters.getAll(name)) {
-                        if (!headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) {
-                            appendHeader(headersMap, name, value);
-                        }
-                    }
-                }
-            }
-        }
-
-        /* Path parameters */
-        for (Entry<String, String> en : ctx.pathParams().entrySet()) {
-            appendHeader(headersMap, en.getKey(), en.getValue());
-        }
-
-        // NOTE: these headers is applied using the same logic as camel-http/camel-jetty to be consistent
-        headersMap.put(Exchange.HTTP_METHOD, request.method().toString());
-        // strip query parameters from the uri
-        headersMap.put(Exchange.HTTP_URL, request.absoluteURI());
-        // uri is without the host and port
-        headersMap.put(Exchange.HTTP_URI, request.uri());
-        headersMap.put(Exchange.HTTP_QUERY, request.query());
-        headersMap.put(Exchange.HTTP_RAW_QUERY, request.query());
-    }
-
-    @SuppressWarnings("unchecked")
-    static void appendHeader(Map<String, Object> headers, String key, Object value) {
-        if (headers.containsKey(key)) {
-            Object existing = headers.get(key);
-            List<Object> list;
-            if (existing instanceof List) {
-                list = (List<Object>) existing;
-            } else {
-                list = new ArrayList<>();
-                list.add(existing);
-            }
-            list.add(value);
-            value = list;
-        }
-
-        headers.put(key, value);
-    }
-
-    @Override
-    public PlatformHttpEndpoint getEndpoint() {
-        return (PlatformHttpEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        final PlatformHttpEndpoint endpoint = getEndpoint();
-        final String path = endpoint.getPath();
-        /* Transform from the Camel path param syntax /path/{key} to vert.x web's /path/:key */
-        final String vertxPathParamPath = PATH_PARAMETER_PATTERN.matcher(path).replaceAll(":$1");
-        final Route newRoute = router.route(vertxPathParamPath);
-
-        final Set<Method> methods = Method.parseList(endpoint.getHttpMethodRestrict());
-        if (!methods.equals(Method.getAll())) {
-            methods.stream().forEach(m -> newRoute.method(HttpMethod.valueOf(m.name())));
-        }
-        if (endpoint.getConsumes() != null) {
-            newRoute.consumes(endpoint.getConsumes());
-        }
-        if (endpoint.getProduces() != null) {
-            newRoute.produces(endpoint.getProduces());
-        }
-
-        handlers.forEach(newRoute::handler);
-
-        newRoute.handler(this::handleRequest);
-
-        this.route = newRoute;
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        if (route != null) {
-            route.remove();
-            route = null;
-        }
-        super.doStop();
-    }
-
-    @Override
-    protected void doSuspend() throws Exception {
-        if (route != null) {
-            route.disable();
-        }
-        super.doSuspend();
-    }
-
-    @Override
-    protected void doResume() throws Exception {
-        if (route != null) {
-            route.enable();
-        }
-        super.doResume();
-    }
-
-    private void handleRequest(RoutingContext ctx) {
-        final Vertx vertx = ctx.vertx();
-        final Exchange exchange = toExchange(ctx);
-
-        //
-        // We do not know if any of the processing logic of the route is synchronous or not so we
-        // need to process the request on a thread on the Vert.x worker pool.
-        //
-        // As example, assuming the platform-http component is configured as the transport provider
-        // for the rest dsl, then the following code may result in a blocking operation that could
-        // block Vert.x event-loop for too long if the target service takes long to respond, as
-        // example in case the service is a knative service scaled to zero that could take some time
-        // to be come available:
-        //
-        //     rest("/results")
-        //         .get("/{id}")
-        //         .route()
-        //             .removeHeaders("*", "CamelHttpPath")
-        //             .to("rest:get:?bridgeEndpoint=true");
-        //
-        vertx.executeBlocking(
-                promise -> {
-                    try {
-                        createUoW(exchange);
-                    } catch (Exception e) {
-                        promise.fail(e);
-                        return;
-                    }
-
-                    getAsyncProcessor().process(exchange, c -> {
-                        if (!exchange.isFailed()) {
-                            promise.complete();
-                        } else {
-                            promise.fail(exchange.getException());
-                        }
-                    });
-                },
-                false,
-                result -> {
-                    Throwable failure = null;
-                    try {
-                        if (result.succeeded()) {
-                            try {
-                                writeResponse(ctx, exchange, getEndpoint().getHeaderFilterStrategy());
-                            } catch (Exception e) {
-                                failure = e;
-                            }
-                        } else {
-                            failure = result.cause();
-                        }
-
-                        if (failure != null) {
-                            getExceptionHandler().handleException(
-                                    "Failed handling platform-http endpoint " + getEndpoint().getPath(),
-                                    failure);
-                            ctx.fail(failure);
-                        }
-                    } finally {
-                        doneUoW(exchange);
-                    }
-                });
-    }
-
-    Exchange toExchange(RoutingContext ctx) {
-        final Exchange exchange = getEndpoint().createExchange();
-        Message in = toCamelMessage(ctx, exchange);
-
-        final String charset = ctx.parsedHeaders().contentType().parameter("charset");
-        if (charset != null) {
-            exchange.setProperty(Exchange.CHARSET_NAME, charset);
-            in.setHeader(Exchange.HTTP_CHARACTER_ENCODING, charset);
-        }
-
-        exchange.setIn(in);
-        return exchange;
-    }
-
-    Message toCamelMessage(RoutingContext ctx, Exchange exchange) {
-        final Message result = new DefaultMessage(exchange);
-
-        final HeaderFilterStrategy headerFilterStrategy = getEndpoint().getHeaderFilterStrategy();
-        populateCamelHeaders(ctx, result.getHeaders(), exchange, headerFilterStrategy);
-        final String mimeType = ctx.parsedHeaders().contentType().value();
-        final boolean isMultipartFormData = "multipart/form-data".equals(mimeType);
-        if ("application/x-www-form-urlencoded".equals(mimeType) || isMultipartFormData) {
-            final MultiMap formData = ctx.request().formAttributes();
-            final Map<String, Object> body = new HashMap<>();
-            for (String key : formData.names()) {
-                for (String value : formData.getAll(key)) {
-                    if (headerFilterStrategy != null
-                            && !headerFilterStrategy.applyFilterToExternalHeaders(key, value, exchange)) {
-                        appendHeader(result.getHeaders(), key, value);
-                        appendHeader(body, key, value);
-                    }
-                }
-            }
-            result.setBody(body);
-            if (isMultipartFormData) {
-                populateAttachments(ctx.fileUploads(), result);
-            }
-        } else {
-            // extract body by myself if undertow parser didn't handle and the method is allowed to have one
-            // body is extracted as byte[] then auto TypeConverter kicks in
-            Method m = Method.valueOf(ctx.request().method().name());
-            if (m.canHaveBody()) {
-                final Buffer body = ctx.getBody();
-                result.setBody(body.getBytes());
-            } else {
-                result.setBody(null);
-            }
-        }
-        return result;
-    }
-
-    void populateAttachments(Set<FileUpload> uploads, Message message) {
-        for (FileUpload upload : uploads) {
-            final String name = upload.name();
-            final String fileName = upload.fileName();
-            LOG.tracef("HTTP attachment %s = %s", name, fileName);
-            // is the file name accepted
-            boolean accepted = true;
-
-            if (fileNameExtWhitelist != null) {
-                String ext = FileUtil.onlyExt(fileName);
-                if (ext != null) {
-                    ext = ext.toLowerCase(Locale.US);
-                    if (!fileNameExtWhitelist.equals("*") && !fileNameExtWhitelist.contains(ext)) {
-                        accepted = false;
-                    }
-                }
-            }
-            if (accepted) {
-                final File localFile = new File(upload.uploadedFileName());
-                uploadAttacher.attachUpload(localFile, fileName, message);
-            } else {
-                LOG.debugf(
-                        "Cannot add file as attachment: %s because the file is not accepted according to fileNameExtWhitelist: %s",
-                        fileName, fileNameExtWhitelist);
-            }
-        }
-    }
-
-}
diff --git a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpEngine.java b/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpEngine.java
deleted file mode 100644
index a2bf008..0000000
--- a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpEngine.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.quarkus.component.platform.http.runtime;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import io.vertx.core.Handler;
-import io.vertx.ext.web.Router;
-import io.vertx.ext.web.RoutingContext;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
-import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
-import org.apache.camel.quarkus.core.UploadAttacher;
-
-public class QuarkusPlatformHttpEngine implements PlatformHttpEngine {
-    private final Router router;
-    private final List<Handler<RoutingContext>> handlers;
-    private final UploadAttacher uploadAttacher;
-
-    public QuarkusPlatformHttpEngine(Router router, List<Handler<RoutingContext>> handlers, UploadAttacher uploadAttacher) {
-        this.router = router;
-        this.handlers = new ArrayList<>(handlers);
-        this.uploadAttacher = uploadAttacher;
-    }
-
-    @Override
-    public Consumer createConsumer(PlatformHttpEndpoint endpoint, Processor processor) {
-        return new QuarkusPlatformHttpConsumer(endpoint, processor, router, handlers, uploadAttacher);
-    }
-
-    public List<Handler<RoutingContext>> getHandlers() {
-        return Collections.unmodifiableList(this.handlers);
-    }
-}
diff --git a/integration-tests/platform-http-engine/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpResource.java b/integration-tests/platform-http-engine/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpResource.java
index 25061df..377c31c 100644
--- a/integration-tests/platform-http-engine/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpResource.java
+++ b/integration-tests/platform-http-engine/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpResource.java
@@ -27,7 +27,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.component.platform.http.PlatformHttpConstants;
-import org.apache.camel.quarkus.component.platform.http.runtime.QuarkusPlatformHttpEngine;
 import org.apache.camel.spi.Registry;
 
 @Path("/test")
@@ -47,10 +46,6 @@ public class PlatformHttpResource {
 
         if (engine != null) {
             builder.add(PlatformHttpConstants.PLATFORM_HTTP_ENGINE_NAME, engine.getClass().getName());
-
-            if (engine instanceof QuarkusPlatformHttpEngine) {
-                builder.add("handlers-size", ((QuarkusPlatformHttpEngine) engine).getHandlers().size());
-            }
         }
 
         if (component != null) {
diff --git a/integration-tests/platform-http-engine/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpEngineTest.java b/integration-tests/platform-http-engine/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpEngineTest.java
index 251a514..460c26b 100644
--- a/integration-tests/platform-http-engine/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpEngineTest.java
+++ b/integration-tests/platform-http-engine/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpEngineTest.java
@@ -20,7 +20,7 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import org.apache.camel.component.platform.http.PlatformHttpComponent;
 import org.apache.camel.component.platform.http.PlatformHttpConstants;
-import org.apache.camel.quarkus.component.platform.http.runtime.QuarkusPlatformHttpEngine;
+import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpEngine;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,8 @@ class PlatformHttpEngineTest {
                 .then()
                 .statusCode(200)
                 .body(
-                        PlatformHttpConstants.PLATFORM_HTTP_ENGINE_NAME, is(QuarkusPlatformHttpEngine.class.getName()),
-                        PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME, is(PlatformHttpComponent.class.getName()),
-                        "handlers-size", is(1));
+                        PlatformHttpConstants.PLATFORM_HTTP_ENGINE_NAME, is(VertxPlatformHttpEngine.class.getName()),
+                        PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME, is(PlatformHttpComponent.class.getName()));
     }
 
     @Test
diff --git a/integration-tests/platform-http/pom.xml b/integration-tests/platform-http/pom.xml
index 09a490c..24f09ae 100644
--- a/integration-tests/platform-http/pom.xml
+++ b/integration-tests/platform-http/pom.xml
@@ -42,10 +42,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-log</artifactId>
         </dependency>
-        <dependency><!-- Leave this one out (and save ~560 kB of the native image) unless you want to attach uploads to the camel message -->
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-attachments</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-support-webhook</artifactId>
@@ -71,19 +67,6 @@
         <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-attachments-deployment</artifactId>
-            <version>${project.version}</version>
-            <type>pom</type>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-log-deployment</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index b33bdd3..b07e266 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1543,7 +1543,7 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
-                <artifactId>camel-platform-http</artifactId>
+                <artifactId>camel-platform-http-vertx</artifactId>
                 <version>${camel.version}</version>
             </dependency>
             <dependency>