body = request.getBody();
+ if (body == null || contentLength <= 0) {
+ body = Flux.just(Buffer.buffer().getByteBuf().nioBuffer());
+ }
+
+ return body;
+ }
+}
diff --git a/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpClientBuilder.java b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpClientBuilder.java
new file mode 100644
index 000000000000..0cb5a145cb38
--- /dev/null
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpClientBuilder.java
@@ -0,0 +1,250 @@
+/*
+ * 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.support.azure.core.http.vertx;
+
+import java.net.InetSocketAddress;
+import java.time.Duration;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.ProxyOptions;
+import com.azure.core.util.Configuration;
+import com.azure.core.util.logging.ClientLogger;
+import io.vertx.core.Vertx;
+import io.vertx.core.net.ProxyType;
+import io.vertx.ext.web.client.WebClient;
+import io.vertx.ext.web.client.WebClientOptions;
+
+import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_CONNECT_TIMEOUT;
+import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_READ_TIMEOUT;
+import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_WRITE_TIMEOUT;
+import static com.azure.core.util.CoreUtils.getDefaultTimeoutFromEnvironment;
+
+/**
+ * Builds a {@link VertxHttpClient}.
+ */
+public class VertxHttpClientBuilder {
+
+ private static final long DEFAULT_CONNECT_TIMEOUT;
+ private static final long DEFAULT_WRITE_TIMEOUT;
+ private static final long DEFAULT_READ_TIMEOUT;
+
+ static {
+ ClientLogger logger = new ClientLogger(VertxHttpClientBuilder.class);
+ Configuration configuration = Configuration.getGlobalConfiguration();
+ DEFAULT_CONNECT_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration,
+ PROPERTY_AZURE_REQUEST_CONNECT_TIMEOUT, Duration.ofSeconds(10), logger).toMillis();
+ DEFAULT_WRITE_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration, PROPERTY_AZURE_REQUEST_WRITE_TIMEOUT,
+ Duration.ofSeconds(60), logger).toSeconds();
+ DEFAULT_READ_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration, PROPERTY_AZURE_REQUEST_READ_TIMEOUT,
+ Duration.ofSeconds(60), logger).toSeconds();
+ }
+
+ private Duration readIdleTimeout;
+ private Duration writeIdleTimeout;
+ private Duration connectTimeout;
+ private Duration idleTimeout = Duration.ofSeconds(60);
+ private ProxyOptions proxyOptions;
+ private Configuration configuration;
+ private WebClientOptions webClientOptions;
+ private final Vertx vertx;
+
+ /**
+ * Creates VertxAsyncHttpClientBuilder.
+ *
+ * @param vertx The {@link Vertx} instance to pass to the {@link WebClient}.
+ */
+ public VertxHttpClientBuilder(Vertx vertx) {
+ Objects.requireNonNull(vertx, "vertx cannot be null");
+ this.vertx = vertx;
+ }
+
+ /**
+ * Sets the read idle timeout.
+ *
+ * The default read idle timeout is 60 seconds.
+ *
+ * @param readIdleTimeout the read idle timeout
+ * @return the updated VertxAsyncHttpClientBuilder object
+ */
+ public VertxHttpClientBuilder readIdleTimeout(Duration readIdleTimeout) {
+ this.readIdleTimeout = readIdleTimeout;
+ return this;
+ }
+
+ /**
+ * Sets the write idle timeout.
+ *
+ * The default read idle timeout is 60 seconds.
+ *
+ * @param writeIdleTimeout the write idle timeout
+ * @return the updated VertxAsyncHttpClientBuilder object
+ */
+ public VertxHttpClientBuilder writeIdleTimeout(Duration writeIdleTimeout) {
+ this.writeIdleTimeout = writeIdleTimeout;
+ return this;
+ }
+
+ /**
+ * Sets the connect timeout.
+ *
+ * The default connect timeout is 10 seconds.
+ *
+ * @param connectTimeout the connection timeout
+ * @return the updated VertxAsyncHttpClientBuilder object
+ */
+ public VertxHttpClientBuilder connectTimeout(Duration connectTimeout) {
+ this.connectTimeout = connectTimeout;
+ return this;
+ }
+
+ /**
+ * Sets the connection idle timeout.
+ *
+ * The default connect timeout is 60 seconds.
+ *
+ * @param idleTimeout the connection idle timeout
+ * @return the updated VertxAsyncHttpClientBuilder object
+ */
+ public VertxHttpClientBuilder idleTimeout(Duration idleTimeout) {
+ this.idleTimeout = idleTimeout;
+ return this;
+ }
+
+ /**
+ * Sets proxy configuration.
+ *
+ * @param proxyOptions The proxy configuration to use.
+ * @return The updated VertxAsyncHttpClientBuilder object.
+ */
+ public VertxHttpClientBuilder proxy(ProxyOptions proxyOptions) {
+ this.proxyOptions = proxyOptions;
+ return this;
+ }
+
+ /**
+ * Sets the configuration store that is used during construction of the HTTP client.
+ *
+ * The default configuration store is a clone of the {@link Configuration#getGlobalConfiguration() global
+ * configuration store}, use {@link Configuration#NONE} to bypass using configuration settings during construction.
+ *
+ * @param configuration The configuration store.
+ * @return The updated VertxAsyncHttpClientBuilder object.
+ */
+ public VertxHttpClientBuilder configuration(Configuration configuration) {
+ this.configuration = configuration;
+ return this;
+ }
+
+ /**
+ * Sets custom {@link WebClientOptions} for the constructed {@link WebClient}.
+ *
+ * @param webClientOptions The options of the web client.
+ * @return The updated VertxAsyncHttpClientBuilder object
+ */
+ public VertxHttpClientBuilder webClientOptions(WebClientOptions webClientOptions) {
+ this.webClientOptions = webClientOptions;
+ return this;
+ }
+
+ /**
+ * Creates a new Vert.x {@link com.azure.core.http.HttpClient} instance on every call, using the
+ * configuration set in the builder at the time of the build method call.
+ *
+ * @return A new Vert.x backed {@link com.azure.core.http.HttpClient} instance.
+ */
+ public HttpClient build() {
+ if (this.webClientOptions == null) {
+ this.webClientOptions = new WebClientOptions();
+ }
+
+ if (this.connectTimeout != null) {
+ this.webClientOptions.setConnectTimeout((int) this.connectTimeout.toMillis());
+ } else {
+ this.webClientOptions.setConnectTimeout((int) DEFAULT_CONNECT_TIMEOUT);
+ }
+
+ if (this.readIdleTimeout != null) {
+ this.webClientOptions.setReadIdleTimeout((int) this.readIdleTimeout.toSeconds());
+ } else {
+ this.webClientOptions.setReadIdleTimeout((int) DEFAULT_READ_TIMEOUT);
+ }
+
+ if (this.writeIdleTimeout != null) {
+ this.webClientOptions.setWriteIdleTimeout((int) this.writeIdleTimeout.toSeconds());
+ } else {
+ this.webClientOptions.setWriteIdleTimeout((int) DEFAULT_WRITE_TIMEOUT);
+ }
+
+ this.webClientOptions.setIdleTimeout((int) this.idleTimeout.toSeconds());
+
+ Configuration buildConfiguration = (configuration == null)
+ ? Configuration.getGlobalConfiguration()
+ : configuration;
+
+ ProxyOptions buildProxyOptions = (this.proxyOptions == null && buildConfiguration != Configuration.NONE)
+ ? ProxyOptions.fromConfiguration(buildConfiguration, true)
+ : this.proxyOptions;
+
+ if (buildProxyOptions != null) {
+ io.vertx.core.net.ProxyOptions vertxProxyOptions = new io.vertx.core.net.ProxyOptions();
+ InetSocketAddress proxyAddress = buildProxyOptions.getAddress();
+
+ if (proxyAddress != null) {
+ vertxProxyOptions.setHost(proxyAddress.getHostName());
+ vertxProxyOptions.setPort(proxyAddress.getPort());
+ }
+
+ String proxyUsername = buildProxyOptions.getUsername();
+ String proxyPassword = buildProxyOptions.getPassword();
+ if (proxyUsername != null && proxyPassword != null) {
+ vertxProxyOptions.setUsername(proxyUsername);
+ vertxProxyOptions.setPassword(proxyPassword);
+ }
+
+ ProxyOptions.Type type = buildProxyOptions.getType();
+ if (type != null) {
+ try {
+ ProxyType proxyType = ProxyType.valueOf(type.name());
+ vertxProxyOptions.setType(proxyType);
+ } catch (IllegalArgumentException e) {
+ throw new IllegalStateException("Unknown Vert.x proxy type: " + type.name(), e);
+ }
+ }
+
+ String nonProxyHostsString = proxyOptions.getNonProxyHosts();
+ if (nonProxyHostsString != null) {
+ // Undo Azure ProxyOptions string sanitization since Vert.x has its own logic
+ List nonProxyHosts = Arrays.asList(nonProxyHostsString.split("\\|"))
+ .stream()
+ .map(host -> host.replaceAll("\\\\E", "")
+ .replaceAll("\\\\Q", "")
+ .replaceAll("\\.\\.", ""))
+ .collect(Collectors.toList());
+ webClientOptions.setNonProxyHosts(nonProxyHosts);
+ }
+
+ webClientOptions.setProxyOptions(vertxProxyOptions);
+ }
+
+ WebClient client = WebClient.create(this.vertx, this.webClientOptions);
+ return new VertxHttpClient(client, this.webClientOptions);
+ }
+}
diff --git a/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpClientProvider.java b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpClientProvider.java
new file mode 100644
index 000000000000..73120d341be9
--- /dev/null
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpClientProvider.java
@@ -0,0 +1,76 @@
+/*
+ * 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.support.azure.core.http.vertx;
+
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.CDI;
+
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.HttpClientProvider;
+import com.azure.core.util.HttpClientOptions;
+import io.vertx.core.Vertx;
+import io.vertx.ext.web.client.WebClient;
+
+/**
+ * {@link HttpClientProvider} backed by the Vert.x {@link WebClient}
+ */
+public class VertxHttpClientProvider implements HttpClientProvider {
+
+ @Override
+ public HttpClient createInstance() {
+ return createInstance(null);
+ }
+
+ @Override
+ public HttpClient createInstance(HttpClientOptions clientOptions) {
+ VertxHttpClientBuilder builder = new VertxHttpClientBuilder(getVertx());
+ if (clientOptions != null) {
+ builder = builder.proxy(clientOptions.getProxyOptions())
+ .configuration(clientOptions.getConfiguration())
+ .connectTimeout(clientOptions.getConnectTimeout())
+ .idleTimeout(clientOptions.getConnectionIdleTimeout())
+ .writeIdleTimeout(clientOptions.getWriteTimeout())
+ .readIdleTimeout(clientOptions.getReadTimeout());
+ }
+ return builder.build();
+ }
+
+ /**
+ * Obtains a reference to the Quarkus managed {@link Vertx} instance
+ *
+ * @return The Quarkus managed {@link Vertx} instance
+ */
+ private static final Vertx getVertx() {
+ BeanManager beanManager = CDI.current().getBeanManager();
+ Set> beans = beanManager.getBeans(Vertx.class);
+ if (beans.isEmpty()) {
+ throw new IllegalStateException("Failed to discover Vert.x bean from the CDI bean manager");
+ }
+
+ if (beans.size() > 1) {
+ throw new IllegalStateException(
+ "Expected 1 Vert.x bean in the CDI bean manager but " + beans.size() + " were found");
+ }
+
+ Bean> bean = beanManager.resolve(beans);
+ Object reference = beanManager.getReference(bean, Vertx.class, beanManager.createCreationalContext(bean));
+ return Vertx.class.cast(reference);
+ }
+}
diff --git a/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpRequest.java b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpRequest.java
new file mode 100644
index 000000000000..e6f9e6084805
--- /dev/null
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpRequest.java
@@ -0,0 +1,37 @@
+/*
+ * 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.support.azure.core.http.vertx;
+
+import io.vertx.core.buffer.Buffer;
+import io.vertx.ext.web.client.HttpRequest;
+
+/**
+ * Holds a Vert.x {@link HttpRequest} together with a body payload.
+ */
+class VertxHttpRequest {
+ private final Buffer body;
+ private final HttpRequest delegate;
+
+ public VertxHttpRequest(HttpRequest delegate, Buffer body) {
+ this.delegate = delegate;
+ this.body = body;
+ }
+
+ public void send(VertxHttpResponseHandler handler) {
+ delegate.sendBuffer(body, handler);
+ }
+}
diff --git a/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpResponse.java b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpResponse.java
new file mode 100644
index 000000000000..7d7196493de8
--- /dev/null
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpResponse.java
@@ -0,0 +1,73 @@
+/*
+ * 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.support.azure.core.http.vertx;
+
+import java.nio.charset.Charset;
+
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.HttpResponse;
+import com.azure.core.util.CoreUtils;
+import io.vertx.core.MultiMap;
+import reactor.core.publisher.Mono;
+
+abstract class VertxHttpResponse extends HttpResponse {
+
+ private final io.vertx.ext.web.client.HttpResponse response;
+ private final HttpHeaders headers;
+
+ VertxHttpResponse(HttpRequest request, io.vertx.ext.web.client.HttpResponse response) {
+ super(request);
+ this.response = response;
+ this.headers = fromVertxHttpHeaders(response.headers());
+ }
+
+ private HttpHeaders fromVertxHttpHeaders(MultiMap headers) {
+ HttpHeaders azureHeaders = new HttpHeaders();
+ headers.names().forEach(name -> azureHeaders.set(name, headers.getAll(name)));
+ return azureHeaders;
+ }
+
+ protected io.vertx.ext.web.client.HttpResponse getVertxHttpResponse() {
+ return this.response;
+ }
+
+ @Override
+ public int getStatusCode() {
+ return response.statusCode();
+ }
+
+ @Override
+ public String getHeaderValue(String name) {
+ return this.headers.getValue(name);
+ }
+
+ @Override
+ public HttpHeaders getHeaders() {
+ return this.headers;
+ }
+
+ @Override
+ public final Mono getBodyAsString() {
+ return getBodyAsByteArray().map(bytes -> CoreUtils.bomAwareToString(bytes, getHeaderValue("Content-Type")));
+ }
+
+ @Override
+ public final Mono getBodyAsString(Charset charset) {
+ return Mono.fromCallable(() -> this.response.bodyAsString(charset.toString()));
+ }
+}
diff --git a/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpResponseHandler.java b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpResponseHandler.java
new file mode 100644
index 000000000000..9e33e0b38685
--- /dev/null
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/java/org/apache/camel/quarkus/support/azure/core/http/vertx/VertxHttpResponseHandler.java
@@ -0,0 +1,59 @@
+/*
+ * 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.support.azure.core.http.vertx;
+
+import com.azure.core.http.HttpRequest;
+import io.vertx.core.AsyncResult;
+import io.vertx.core.Handler;
+import io.vertx.core.buffer.Buffer;
+import io.vertx.ext.web.client.HttpResponse;
+import reactor.core.publisher.MonoSink;
+
+/**
+ * {@link Handler} for Azure HTTP responses.
+ */
+class VertxHttpResponseHandler implements Handler>> {
+
+ private final HttpRequest request;
+ private final MonoSink sink;
+ private final boolean eagerlyReadResponse;
+
+ VertxHttpResponseHandler(HttpRequest request, MonoSink sink,
+ boolean eagerlyReadResponse) {
+ this.request = request;
+ this.sink = sink;
+ this.eagerlyReadResponse = eagerlyReadResponse;
+ }
+
+ @Override
+ public void handle(AsyncResult> event) {
+ if (event.succeeded()) {
+ VertxHttpResponse response;
+ if (eagerlyReadResponse) {
+ io.vertx.ext.web.client.HttpResponse originalResponse = event.result();
+ response = new BufferedVertxHttpResponse(request, originalResponse, originalResponse.body());
+ } else {
+ response = new VertxHttpAsyncResponse(request, event.result());
+ }
+ sink.success(response);
+ } else {
+ if (event.cause() != null) {
+ sink.error(event.cause());
+ }
+ }
+ }
+}
diff --git a/extensions/ipfs/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-support/azure-core-http-client-vertx/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 68%
rename from extensions/ipfs/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to extensions-support/azure-core-http-client-vertx/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index 786e8c8b634c..5f875c0b5a1a 100644
--- a/extensions/ipfs/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -15,17 +15,13 @@
# limitations under the License.
#
-# This is a generated file. Do not edit directly!
-# To re-generate, run the following command from the top level directory:
-#
-# mvn -N cq:update-quarkus-metadata
-#
---
-name: "Camel IPFS"
-description: "Access the Interplanetary File System (IPFS)"
+name: "Camel Quarkus Support Azure Core HTTP Client Vert.x"
+description: "Camel Quarkus Support Azure Core HTTP Client Vert.x"
metadata:
- guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/ipfs.html"
+ unlisted: true
+ keywords:
+ - "camel"
+ guide: "https://quarkus.io/guides/camel"
categories:
- - "integration"
- status:
- - "stable"
+ - "integration"
\ No newline at end of file
diff --git a/extensions-support/azure-core-http-client-vertx/runtime/src/main/resources/META-INF/services/com.azure.core.http.HttpClientProvider b/extensions-support/azure-core-http-client-vertx/runtime/src/main/resources/META-INF/services/com.azure.core.http.HttpClientProvider
new file mode 100644
index 000000000000..8487b59c8fa5
--- /dev/null
+++ b/extensions-support/azure-core-http-client-vertx/runtime/src/main/resources/META-INF/services/com.azure.core.http.HttpClientProvider
@@ -0,0 +1 @@
+org.apache.camel.quarkus.support.azure.core.http.vertx.VertxHttpClientProvider
\ No newline at end of file
diff --git a/extensions-support/azure-core/deployment/pom.xml b/extensions-support/azure-core/deployment/pom.xml
index 91a5018c6040..b762e0a96122 100644
--- a/extensions-support/azure-core/deployment/pom.xml
+++ b/extensions-support/azure-core/deployment/pom.xml
@@ -35,12 +35,12 @@
quarkus-core-deployment