This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 283158579c Fixes #8644 Add RocketMQ extension
283158579c is described below
commit 283158579c08e62e3e68c627652d051542c04b61
Author: phateffect <[email protected]>
AuthorDate: Thu May 14 14:10:46 2026 +0800
Fixes #8644 Add RocketMQ extension
Co-authored-by: shiwei <[email protected]>
---
catalog/pom.xml | 13 ++
docs/modules/ROOT/examples/components/rocketmq.yml | 13 ++
docs/modules/ROOT/nav.adoc | 1 +
.../ROOT/pages/reference/extensions/rocketmq.adoc | 45 ++++++
extensions/pom.xml | 1 +
extensions/rocketmq/deployment/pom.xml | 71 +++++++++
.../rocketmq/deployment/RocketmqProcessor.java | 143 ++++++++++++++++++
extensions/rocketmq/pom.xml | 39 +++++
extensions/rocketmq/runtime/pom.xml | 144 +++++++++++++++++++
.../rocketmq/graal/Target_MonetaCodec.java | 65 +++++++++
.../rocketmq/runtime/CamelRocketmqRecorder.java | 30 ++++
.../main/resources/META-INF/quarkus-extension.yaml | 32 +++++
integration-tests/pom.xml | 1 +
integration-tests/rocketmq/pom.xml | 159 +++++++++++++++++++++
.../component/rocketmq/it/RocketmqResource.java | 68 +++++++++
.../component/rocketmq/it/RocketmqRoutes.java | 35 +++++
.../quarkus/component/rocketmq/it/RocketmqIT.java | 24 ++++
.../component/rocketmq/it/RocketmqTest.java | 53 +++++++
.../rocketmq/it/RocketmqTestResource.java | 146 +++++++++++++++++++
pom.xml | 2 +
poms/bom/pom.xml | 64 +++++++++
poms/bom/src/main/generated/flattened-full-pom.xml | 79 ++++++++--
.../src/main/generated/flattened-reduced-pom.xml | 59 ++++++++
.../generated/flattened-reduced-verbose-pom.xml | 59 ++++++++
tooling/scripts/test-categories.yaml | 2 +-
25 files changed, 1332 insertions(+), 16 deletions(-)
diff --git a/catalog/pom.xml b/catalog/pom.xml
index 76a60b5275..4cfed1ac23 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -3503,6 +3503,19 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq</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-rss</artifactId>
diff --git a/docs/modules/ROOT/examples/components/rocketmq.yml
b/docs/modules/ROOT/examples/components/rocketmq.yml
new file mode 100644
index 0000000000..3ec864435b
--- /dev/null
+++ b/docs/modules/ROOT/examples/components/rocketmq.yml
@@ -0,0 +1,13 @@
+# Do not edit directly!
+# This file was generated by
camel-quarkus-maven-plugin:update-extension-doc-page
+cqArtifactId: camel-quarkus-rocketmq
+cqArtifactIdBase: rocketmq
+cqNativeSupported: true
+cqStatus: Stable
+cqDeprecated: false
+cqJvmSince: 3.36.0
+cqNativeSince: 3.36.0
+cqCamelPartName: rocketmq
+cqCamelPartTitle: RocketMQ
+cqCamelPartDescription: Send and receive messages from RocketMQ cluster.
+cqExtensionPageTitle: RocketMQ
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 36093cb510..a8f2eb987a 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -284,6 +284,7 @@
*** xref:reference/extensions/ref.adoc[Ref]
*** xref:reference/extensions/rest.adoc[Rest]
*** xref:reference/extensions/robotframework.adoc[Robot Framework]
+*** xref:reference/extensions/rocketmq.adoc[RocketMQ]
*** xref:reference/extensions/sap-netweaver.adoc[SAP NetWeaver]
*** xref:reference/extensions/jsch.adoc[SCP]
*** xref:reference/extensions/seda.adoc[SEDA]
diff --git a/docs/modules/ROOT/pages/reference/extensions/rocketmq.adoc
b/docs/modules/ROOT/pages/reference/extensions/rocketmq.adoc
new file mode 100644
index 0000000000..96b8f96905
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/rocketmq.adoc
@@ -0,0 +1,45 @@
+// Do not edit directly!
+// This file was generated by
camel-quarkus-maven-plugin:update-extension-doc-page
+[id="extensions-rocketmq"]
+= RocketMQ
+:linkattrs:
+:cq-artifact-id: camel-quarkus-rocketmq
+:cq-native-supported: true
+:cq-status: Stable
+:cq-status-deprecation: Stable
+:cq-description: Send and receive messages from RocketMQ cluster.
+:cq-deprecated: false
+:cq-jvm-since: 3.36.0
+:cq-native-since: 3.36.0
+
+ifeval::[{doc-show-badges} == true]
+[.badges]
+[.badge-key]##JVM since##[.badge-supported]##3.36.0## [.badge-key]##Native
since##[.badge-supported]##3.36.0##
+endif::[]
+
+Send and receive messages from RocketMQ cluster.
+
+[id="extensions-rocketmq-whats-inside"]
+== What's inside
+
+* xref:{cq-camel-components}::rocketmq-component.adoc[RocketMQ component], URI
syntax: `rocketmq:topicName`
+
+Please refer to the above link for usage and configuration details.
+
+[id="extensions-rocketmq-maven-coordinates"]
+== Maven coordinates
+
+https://{link-quarkus-code-generator}/?extension-search=camel-quarkus-rocketmq[Create
a new project with this extension on {link-quarkus-code-generator},
window="_blank"]
+
+Or add the coordinates to your existing project:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq</artifactId>
+</dependency>
+----
+ifeval::[{doc-show-user-guide-link} == true]
+Check the xref:user-guide/index.adoc[User guide] for more information about
writing Camel Quarkus applications.
+endif::[]
diff --git a/extensions/pom.xml b/extensions/pom.xml
index d4a7258b29..dc76e27889 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -246,6 +246,7 @@
<module>ref</module>
<module>rest</module>
<module>rest-openapi</module>
+ <module>rocketmq</module>
<module>rss</module>
<module>saga</module>
<module>salesforce</module>
diff --git a/extensions/rocketmq/deployment/pom.xml
b/extensions/rocketmq/deployment/pom.xml
new file mode 100644
index 0000000000..79d3fc82ed
--- /dev/null
+++ b/extensions/rocketmq/deployment/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq-parent</artifactId>
+ <version>3.36.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-rocketmq-deployment</artifactId>
+ <name>Camel Quarkus :: RocketMQ :: Deployment</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-netty-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-core-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+
<artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+
<artifactId>quarkus-extension-processor</artifactId>
+ <version>${quarkus.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git
a/extensions/rocketmq/deployment/src/main/java/org/apache/camel/quarkus/component/rocketmq/deployment/RocketmqProcessor.java
b/extensions/rocketmq/deployment/src/main/java/org/apache/camel/quarkus/component/rocketmq/deployment/RocketmqProcessor.java
new file mode 100644
index 0000000000..6f83e66a21
--- /dev/null
+++
b/extensions/rocketmq/deployment/src/main/java/org/apache/camel/quarkus/component/rocketmq/deployment/RocketmqProcessor.java
@@ -0,0 +1,143 @@
+/*
+ * 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.rocketmq.deployment;
+
+import java.util.List;
+
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.alibaba.fastjson.util.ASMClassLoader;
+import io.quarkus.deployment.annotations.BuildProducer;
+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.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import
io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
+import
io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedPackageBuildItem;
+import
org.apache.camel.quarkus.component.rocketmq.runtime.CamelRocketmqRecorder;
+import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
+
+class RocketmqProcessor {
+
+ private static final String FEATURE = "camel-rocketmq";
+
+ private static final List<String> ROCKETMQ_REFLECTIVE_CLASSES = List.of(
+ "org.apache.rocketmq.client.ClientConfig",
+ "org.apache.rocketmq.client.consumer.DefaultMQPushConsumer",
+ "org.apache.rocketmq.common.message.MessageQueue",
+ "org.apache.rocketmq.remoting.protocol.RemotingCommand",
+ "org.apache.rocketmq.remoting.protocol.RemotingSerializable",
+ "org.apache.rocketmq.remoting.protocol.body.ConsumeStatus",
+ "org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo",
+ "org.apache.rocketmq.remoting.protocol.body.ProcessQueueInfo",
+
"org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody",
+
"org.apache.rocketmq.remoting.protocol.header.GetConsumerRunningInfoRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.HeartbeatRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.NotifyConsumerIdsChangedRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.PullMessageRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.QueryConsumerOffsetRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.QueryConsumerOffsetResponseHeader",
+
"org.apache.rocketmq.remoting.protocol.header.SendMessageRequestHeaderV2",
+
"org.apache.rocketmq.remoting.protocol.header.UnregisterClientRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.UpdateConsumerOffsetRequestHeader",
+
"org.apache.rocketmq.remoting.protocol.header.namesrv.GetRouteInfoRequestHeader",
+ "org.apache.rocketmq.remoting.protocol.heartbeat.ConsumerData",
+ "org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData",
+ "org.apache.rocketmq.remoting.protocol.heartbeat.ProducerData",
+ "org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData",
+ "org.apache.rocketmq.remoting.protocol.route.BrokerData",
+ "org.apache.rocketmq.remoting.protocol.route.QueueData",
+ "org.apache.rocketmq.remoting.protocol.route.TopicRouteData",
+ "org.apache.rocketmq.remoting.rpc.RpcRequestHeader",
+ "org.apache.rocketmq.remoting.rpc.TopicQueueRequestHeader",
+ "org.apache.rocketmq.remoting.rpc.TopicRequestHeader");
+
+ private static final List<String> ROCKETMQ_NETTY_REFLECTIVE_CLASSES =
List.of(
+ "org.apache.rocketmq.common.logging.DefaultJoranConfiguratorExt",
+ "org.apache.rocketmq.remoting.netty.NettyDecoder",
+ "org.apache.rocketmq.remoting.netty.NettyEncoder",
+ "org.apache.rocketmq.remoting.netty.NettyRemotingClient$2",
+
"org.apache.rocketmq.remoting.netty.NettyRemotingClient$NettyClientHandler",
+
"org.apache.rocketmq.remoting.netty.NettyRemotingClient$NettyConnectManageHandler",
+
"org.apache.rocketmq.remoting.protocol.header.PullMessageResponseHeader",
+
"org.apache.rocketmq.remoting.protocol.header.SendMessageResponseHeader");
+
+ private static final List<String> ROCKETMQ_REFLECTIVE_ENUMS = List.of(
+ "org.apache.rocketmq.common.consumer.ConsumeFromWhere",
+ "org.apache.rocketmq.remoting.protocol.LanguageCode",
+ "org.apache.rocketmq.remoting.protocol.RequestCode",
+ "org.apache.rocketmq.remoting.protocol.ResponseCode",
+ "org.apache.rocketmq.remoting.protocol.SerializeType",
+ "org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType",
+ "org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel");
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+
+ @BuildStep
+ @Record(ExecutionTime.RUNTIME_INIT)
+ void configureFastJson(CamelRocketmqRecorder recorder) {
+ recorder.configureFastJson();
+ }
+
+ @BuildStep
+ void registerForReflection(BuildProducer<ReflectiveClassBuildItem>
reflectiveClass) {
+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(ROCKETMQ_REFLECTIVE_CLASSES)
+ .fields()
+ .methods()
+ .constructors()
+ .build());
+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(ROCKETMQ_NETTY_REFLECTIVE_CLASSES)
+ .methods()
+ .constructors()
+ .build());
+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(ROCKETMQ_REFLECTIVE_ENUMS)
+ .fields()
+ .build());
+ }
+
+ @BuildStep
+ void registerResources(BuildProducer<NativeImageResourceBuildItem>
resource) {
+ resource.produce(new NativeImageResourceBuildItem(
+
"META-INF/services/org.apache.rocketmq.common.namesrv.TopAddressing"));
+ }
+
+ @BuildStep
+ void
registerRuntimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem>
runtimeInitializedClasses,
+ BuildProducer<RuntimeInitializedPackageBuildItem>
runtimeInitializedPackages) {
+ runtimeInitializedClasses.produce(new RuntimeInitializedClassBuildItem(
+
org.apache.camel.component.rocketmq.RocketMQConsumer.class.getName()));
+ runtimeInitializedClasses.produce(new
RuntimeInitializedClassBuildItem(DefaultMQPushConsumer.class.getName()));
+
+ runtimeInitializedClasses.produce(new
RuntimeInitializedClassBuildItem(SerializeConfig.class.getName()));
+ runtimeInitializedClasses.produce(new
RuntimeInitializedClassBuildItem(ParserConfig.class.getName()));
+ runtimeInitializedClasses.produce(new
RuntimeInitializedClassBuildItem(ASMClassLoader.class.getName()));
+
+ // RocketMQ logging framework uses a shaded logback with AsyncAppender
that creates threads.
+ // Ensure all RocketMQ classes are runtime-initialized to prevent
threads in the image heap.
+ runtimeInitializedPackages.produce(new
RuntimeInitializedPackageBuildItem("org.apache.rocketmq"));
+
+ // Fastjson references optional types (e.g., javax.money.Monetary)
that may not be on the classpath.
+ // Runtime-initialize the package to avoid build-time linkage errors.
+ runtimeInitializedPackages.produce(new
RuntimeInitializedPackageBuildItem("com.alibaba.fastjson"));
+ }
+}
diff --git a/extensions/rocketmq/pom.xml b/extensions/rocketmq/pom.xml
new file mode 100644
index 0000000000..069b9a9fc1
--- /dev/null
+++ b/extensions/rocketmq/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-extensions</artifactId>
+ <version>3.36.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-rocketmq-parent</artifactId>
+ <name>Camel Quarkus :: RocketMQ</name>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>deployment</module>
+ <module>runtime</module>
+ </modules>
+</project>
diff --git a/extensions/rocketmq/runtime/pom.xml
b/extensions/rocketmq/runtime/pom.xml
new file mode 100644
index 0000000000..575ebbfd66
--- /dev/null
+++ b/extensions/rocketmq/runtime/pom.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq-parent</artifactId>
+ <version>3.36.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-rocketmq</artifactId>
+ <name>Camel Quarkus :: RocketMQ :: Runtime</name>
+ <description>Send and receive messages from RocketMQ cluster.</description>
+
+ <properties>
+ <camel.quarkus.jvmSince>3.36.0</camel.quarkus.jvmSince>
+ <camel.quarkus.nativeSince>3.36.0</camel.quarkus.nativeSince>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-netty</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.graalvm.sdk</groupId>
+ <artifactId>nativeimage</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-rocketmq</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.google.android</groupId>
+ <artifactId>annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>jsr305</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-netty-shaded</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>animal-sniffer-annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.lz4</groupId>
+ <artifactId>lz4-java</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-extension-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+
<artifactId>quarkus-extension-processor</artifactId>
+ <version>${quarkus.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+
+ <profiles>
+ <profile>
+ <id>full</id>
+ <activation>
+ <property>
+ <name>!quickly</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>update-extension-doc-page</id>
+ <goals>
+ <goal>update-extension-doc-page</goal>
+ </goals>
+ <phase>process-classes</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git
a/extensions/rocketmq/runtime/src/main/java/org/apache/camel/quarkus/component/rocketmq/graal/Target_MonetaCodec.java
b/extensions/rocketmq/runtime/src/main/java/org/apache/camel/quarkus/component/rocketmq/graal/Target_MonetaCodec.java
new file mode 100644
index 0000000000..02b7e3a40d
--- /dev/null
+++
b/extensions/rocketmq/runtime/src/main/java/org/apache/camel/quarkus/component/rocketmq/graal/Target_MonetaCodec.java
@@ -0,0 +1,65 @@
+/*
+ * 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.rocketmq.graal;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+
+import com.alibaba.fastjson.parser.DefaultJSONParser;
+import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
+import com.alibaba.fastjson.serializer.JSONSerializer;
+import com.alibaba.fastjson.serializer.ObjectSerializer;
+import com.alibaba.fastjson.support.moneta.MonetaCodec;
+import com.oracle.svm.core.annotate.Alias;
+import com.oracle.svm.core.annotate.RecomputeFieldValue;
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
+
+/**
+ * Removes the optional javax.money dependency from fastjson MonetaCodec so
that
+ * NativeImageAllowIncompleteClasspathBuildItem is not required.
+ */
+@TargetClass(MonetaCodec.class)
+final class Target_MonetaCodec implements ObjectSerializer, ObjectDeserializer
{
+
+ @Alias
+ @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.FromAlias)
+ public static MonetaCodec instance = new MonetaCodec();
+
+ @Substitute
+ public Target_MonetaCodec() {
+ }
+
+ @Substitute
+ @Override
+ public void write(JSONSerializer serializer, Object object, Object
fieldName, Type fieldType, int features)
+ throws IOException {
+ throw new UnsupportedOperationException("javax.money support is not
available in native mode");
+ }
+
+ @Substitute
+ @Override
+ public <T> T deserialze(DefaultJSONParser parser, Type type, Object
fieldName) {
+ throw new UnsupportedOperationException("javax.money support is not
available in native mode");
+ }
+
+ @Substitute
+ @Override
+ public int getFastMatchToken() {
+ return 0;
+ }
+}
diff --git
a/extensions/rocketmq/runtime/src/main/java/org/apache/camel/quarkus/component/rocketmq/runtime/CamelRocketmqRecorder.java
b/extensions/rocketmq/runtime/src/main/java/org/apache/camel/quarkus/component/rocketmq/runtime/CamelRocketmqRecorder.java
new file mode 100644
index 0000000000..ace61bfc43
--- /dev/null
+++
b/extensions/rocketmq/runtime/src/main/java/org/apache/camel/quarkus/component/rocketmq/runtime/CamelRocketmqRecorder.java
@@ -0,0 +1,30 @@
+/*
+ * 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.rocketmq.runtime;
+
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import io.quarkus.runtime.annotations.Recorder;
+
+@Recorder
+public class CamelRocketmqRecorder {
+
+ public void configureFastJson() {
+ ParserConfig.getGlobalInstance().setAsmEnable(false);
+ SerializeConfig.getGlobalInstance().setAsmEnable(false);
+ }
+}
diff --git
a/extensions/rocketmq/runtime/src/main/resources/META-INF/quarkus-extension.yaml
b/extensions/rocketmq/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000000..1551719627
--- /dev/null
+++
b/extensions/rocketmq/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,32 @@
+#
+# 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.
+#
+
+# 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 RocketMQ"
+description: "Send and receive messages from RocketMQ cluster"
+metadata:
+ icon-url:
"https://raw.githubusercontent.com/apache/camel-website/main/antora-ui-camel/src/img/logo-d.svg"
+ sponsor: "Apache Software Foundation"
+ guide:
"https://camel.apache.org/camel-quarkus/latest/reference/extensions/rocketmq.html"
+ categories:
+ - "integration"
+ status: "stable"
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 10fa5dc7f8..31143241f5 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -219,6 +219,7 @@
<module>reactive-streams</module>
<module>rest</module>
<module>rest-openapi</module>
+ <module>rocketmq</module>
<module>saga</module>
<module>salesforce</module>
<module>sap-netweaver</module>
diff --git a/integration-tests/rocketmq/pom.xml
b/integration-tests/rocketmq/pom.xml
new file mode 100644
index 0000000000..3b27ec3c8e
--- /dev/null
+++ b/integration-tests/rocketmq/pom.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-build-parent-it</artifactId>
+ <version>3.36.0-SNAPSHOT</version>
+ <relativePath>../../poms/build-parent-it/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-integration-test-rocketmq</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: RocketMQ</name>
+ <description>Integration tests for Camel Quarkus RocketMQ
extension</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-bean</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-resteasy</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-resteasy-jackson</artifactId>
+ </dependency>
+
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>testcontainers</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-support</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>native</id>
+ <activation>
+ <property>
+ <name>native</name>
+ </property>
+ </activation>
+ <properties>
+ <quarkus.native.enabled>true</quarkus.native.enabled>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>virtualDependencies</id>
+ <activation>
+ <property>
+ <name>!noVirtualDependencies</name>
+ </property>
+ </activation>
+ <dependencies>
+ <!-- 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-bean-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-rocketmq-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>skip-testcontainers-tests</id>
+ <activation>
+ <property>
+ <name>skip-testcontainers-tests</name>
+ </property>
+ </activation>
+ <properties>
+ <skipTests>true</skipTests>
+ </properties>
+ </profile>
+ </profiles>
+
+</project>
diff --git
a/integration-tests/rocketmq/src/main/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqResource.java
b/integration-tests/rocketmq/src/main/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqResource.java
new file mode 100644
index 0000000000..2b886550a9
--- /dev/null
+++
b/integration-tests/rocketmq/src/main/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqResource.java
@@ -0,0 +1,68 @@
+/*
+ * 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.rocketmq.it;
+
+import java.util.Collection;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.HeaderParam;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import org.apache.camel.Body;
+import org.apache.camel.Exchange;
+import org.apache.camel.ProducerTemplate;
+import org.jboss.logging.Logger;
+
+@Path("/rocketmq")
+@ApplicationScoped
+public class RocketmqResource {
+
+ private static final Logger LOG = Logger.getLogger(RocketmqResource.class);
+
+ private final ConcurrentHashMap<String, ConcurrentLinkedQueue<String>>
msgStore = new ConcurrentHashMap<>();
+
+ @Inject
+ ProducerTemplate producerTemplate;
+
+ @Path("/send")
+ @POST
+ @Consumes(MediaType.TEXT_PLAIN)
+ public void send(@HeaderParam("sendToEndpointUri") String
sendToEndpointUri, String message) {
+ LOG.debugf("Invoking send with (%s, %s)", sendToEndpointUri, message);
+ producerTemplate.sendBody(sendToEndpointUri, message);
+ }
+
+ public void storeMessage(Exchange e, @Body String message) {
+ LOG.debugf("Invoking storeMessage with (%s, %s)", e, message);
+ msgStore.computeIfAbsent(e.getFromRouteId(), s -> new
ConcurrentLinkedQueue<>()).add(message);
+ }
+
+ @Path("/messages/{route-id}")
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public Collection<String> getRouteMessages(@PathParam("route-id") String
routeId) {
+ return msgStore.getOrDefault(routeId, new ConcurrentLinkedQueue<>());
+ }
+}
diff --git
a/integration-tests/rocketmq/src/main/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqRoutes.java
b/integration-tests/rocketmq/src/main/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqRoutes.java
new file mode 100644
index 0000000000..159329406a
--- /dev/null
+++
b/integration-tests/rocketmq/src/main/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqRoutes.java
@@ -0,0 +1,35 @@
+/*
+ * 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.rocketmq.it;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.apache.camel.builder.RouteBuilder;
+
+@ApplicationScoped
+public class RocketmqRoutes extends RouteBuilder {
+
+ @Inject
+ RocketmqResource rocketmqResource;
+
+ @Override
+ public void configure() {
+ from("rocketmq:camel-test?consumerGroup=camel-test-consumer-group")
+ .routeId("rocketmq-test")
+ .bean(rocketmqResource, "storeMessage");
+ }
+}
diff --git
a/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqIT.java
b/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqIT.java
new file mode 100644
index 0000000000..05345eab6b
--- /dev/null
+++
b/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqIT.java
@@ -0,0 +1,24 @@
+/*
+ * 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.rocketmq.it;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+class RocketmqIT extends RocketmqTest {
+
+}
diff --git
a/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqTest.java
b/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqTest.java
new file mode 100644
index 0000000000..085dc615af
--- /dev/null
+++
b/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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.rocketmq.it;
+
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.http.ContentType;
+import io.restassured.http.Header;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.awaitility.Awaitility.await;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@QuarkusTestResource(RocketmqTestResource.class)
+@QuarkusTest
+class RocketmqTest {
+
+ @Test
+ void produceConsumeRoundTripShouldSucceed() {
+ String message = "Hello Camel Quarkus RocketMQ";
+
+ Header header = new Header("sendToEndpointUri",
+ "rocketmq:camel-test?producerGroup=camel-test-producer-group");
+
given().when().header(header).contentType(ContentType.TEXT).body(message).post("/rocketmq/send").then()
+ .statusCode(204);
+
+ await().atMost(30L, TimeUnit.SECONDS).until(() -> {
+ return
given().get("/rocketmq/messages/rocketmq-test").path("size()").equals(1);
+ });
+
+ String[] messages =
given().get("/rocketmq/messages/rocketmq-test").then().statusCode(200).extract()
+ .as(String[].class);
+ assertEquals(1, messages.length);
+ assertEquals(message, messages[0]);
+ }
+}
diff --git
a/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqTestResource.java
b/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqTestResource.java
new file mode 100644
index 0000000000..780dd43593
--- /dev/null
+++
b/integration-tests/rocketmq/src/test/java/org/apache/camel/quarkus/component/rocketmq/it/RocketmqTestResource.java
@@ -0,0 +1,146 @@
+/*
+ * 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.rocketmq.it;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+import org.apache.camel.quarkus.test.AvailablePortFinder;
+import org.eclipse.microprofile.config.ConfigProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.images.builder.Transferable;
+
+public class RocketmqTestResource implements
QuarkusTestResourceLifecycleManager {
+
+ private static final Logger LOG =
LoggerFactory.getLogger(RocketmqTestResource.class);
+ private static final String ROCKETMQ_IMAGE = ConfigProvider.getConfig()
+ .getValue("rocketmq.container.image", String.class);
+ private static final int NAMESRV_PORT = 9876;
+
+ private GenericContainer<?> namesrvContainer;
+ private GenericContainer<?> brokerContainer;
+ private Network network;
+
+ @Override
+ public Map<String, String> start() {
+ network = Network.newNetwork();
+
+ namesrvContainer = new GenericContainer<>(ROCKETMQ_IMAGE)
+ .withNetwork(network)
+ .withNetworkAliases("namesrv")
+ .withExposedPorts(NAMESRV_PORT)
+ .withCommand("sh", "mqnamesrv")
+ .waitingFor(Wait.forLogMessage(".*The Name Server boot
success.*", 1));
+
+ namesrvContainer.start();
+
+ int brokerPort = AvailablePortFinder.getNextAvailable();
+ String brokerConf = String.format(
+
"brokerIP1=%s%nlistenPort=%d%nbrokerName=broker-a%nbrokerClusterName=DefaultCluster%n",
+ namesrvContainer.getHost(), brokerPort);
+
+ brokerContainer = new RocketMQBrokerContainer(ROCKETMQ_IMAGE,
brokerPort)
+ .withNetwork(network)
+ .withNetworkAliases("broker")
+
.withCopyToContainer(Transferable.of(brokerConf.getBytes(StandardCharsets.UTF_8)),
"/tmp/broker.conf")
+ .withCommand("sh", "mqbroker", "-n", "namesrv:9876", "-c",
"/tmp/broker.conf")
+ .dependsOn(namesrvContainer)
+ .waitingFor(Wait.forLogMessage(".*The broker\\[.*\\] boot
success.*", 1));
+
+ brokerContainer.start();
+
+ createTopic();
+
+ Map<String, String> properties = new HashMap<>();
+ properties.put("camel.component.rocketmq.namesrv-addr",
+ namesrvContainer.getHost() + ":" +
namesrvContainer.getMappedPort(NAMESRV_PORT));
+ LOG.info("RocketMQ test properties: {}", properties);
+ return properties;
+ }
+
+ private void createTopic() {
+ long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(30);
+ org.testcontainers.containers.Container.ExecResult lastResult = null;
+
+ while (System.nanoTime() < deadline) {
+ lastResult = updateTopic();
+ if (lastResult.getExitCode() == 0 &&
lastResult.getStdout().contains("success")) {
+ LOG.info("Topic creation stdout: {}", lastResult.getStdout());
+ return;
+ }
+
+ try {
+ Thread.sleep(TimeUnit.SECONDS.toMillis(1));
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new IllegalStateException("Interrupted while creating
RocketMQ topic", e);
+ }
+ }
+
+ throw new IllegalStateException(String.format(
+ "Could not create RocketMQ topic. Exit code: %d, stdout: %s,
stderr: %s",
+ lastResult.getExitCode(), lastResult.getStdout(),
lastResult.getStderr()));
+ }
+
+ private org.testcontainers.containers.Container.ExecResult updateTopic() {
+ try {
+ return brokerContainer.execInContainer(
+ "sh", "mqadmin", "updateTopic", "-n", "namesrv:9876",
"-t", "camel-test", "-c", "DefaultCluster");
+ } catch (Exception e) {
+ throw new IllegalStateException("Could not create topic via
mqadmin", e);
+ }
+ }
+
+ @Override
+ public void stop() {
+ try {
+ if (brokerContainer != null) {
+ brokerContainer.stop();
+ }
+ } catch (Exception e) {
+ LOG.error("Error stopping broker container", e);
+ }
+ try {
+ if (namesrvContainer != null) {
+ namesrvContainer.stop();
+ }
+ } catch (Exception e) {
+ LOG.error("Error stopping nameserver container", e);
+ }
+ try {
+ if (network != null) {
+ network.close();
+ }
+ } catch (Exception e) {
+ LOG.error("Error closing RocketMQ test network", e);
+ }
+ }
+
+ static class RocketMQBrokerContainer extends
GenericContainer<RocketMQBrokerContainer> {
+ RocketMQBrokerContainer(String image, int brokerPort) {
+ super(image);
+ addFixedExposedPort(brokerPort, brokerPort);
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index ccb3a7073b..78ad8f56de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,7 @@
<camel-kamelets.version>4.20.0</camel-kamelets.version>
<cassandra-quarkus.version>1.4.1</cassandra-quarkus.version><!-- This
should be in sync with quarkus-platform
https://repo1.maven.org/maven2/com/datastax/oss/quarkus/cassandra-quarkus-bom/
-->
<debezium.version>3.5.0.Final</debezium.version> <!-- This should be
in sync with quarkus-platform https://github.com/quarkusio/quarkus-platform-->
+ <rocketmq.version>${rocketmq-version}</rocketmq.version>
<optaplanner.version>10.0.0</optaplanner.version><!-- This should be
in sync with quarkus-platform
https://repo1.maven.org/maven2/org/optaplanner/optaplanner-quarkus/ -->
<quarkiverse-amazonservices.version>3.18.0</quarkiverse-amazonservices.version><!--
This should be in sync with quarkus-platform
https://repo1.maven.org/maven2/io/quarkiverse/amazonservices/quarkus-amazon-services-parent/
-->
<quarkiverse-artemis.version>3.14.2</quarkiverse-artemis.version><!--
https://repo1.maven.org/maven2/io/quarkiverse/artemis/quarkus-artemis-parent/
-->
@@ -281,6 +282,7 @@
<qdrant.container.image>mirror.gcr.io/qdrant/qdrant:v1.16.0-unprivileged</qdrant.container.image>
<rabbitmq.container.image>mirror.gcr.io/rabbitmq:4.2.4-management-alpine</rabbitmq.container.image>
<redis.container.image>mirror.gcr.io/redis:7.4.0-alpine</redis.container.image>
+
<rocketmq.container.image>apache/rocketmq:5.3.2</rocketmq.container.image>
<servicebus-emulator.container.image>mcr.microsoft.com/azure-messaging/servicebus-emulator:latest</servicebus-emulator.container.image>
<smb.container.image>quay.io/jamesnetherton/camel-smb-test-server:2.0.0</smb.container.image>
<solr.container.image>mirror.gcr.io/solr:9.9.0-slim</solr.container.image>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index c34f011909..8fc379b883 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -2762,6 +2762,11 @@
<artifactId>camel-robotframework</artifactId>
<version>${camel.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-rocketmq</artifactId>
+ <version>${camel.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-rss</artifactId>
@@ -6065,6 +6070,16 @@
<artifactId>camel-quarkus-robotframework-deployment</artifactId>
<version>${camel-quarkus.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq</artifactId>
+ <version>${camel-quarkus.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq-deployment</artifactId>
+ <version>${camel-quarkus.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-rss</artifactId>
@@ -7633,6 +7648,12 @@
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>${commons-validator.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
@@ -8106,6 +8127,49 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-acl</artifactId>
+ <version>${rocketmq.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-client</artifactId>
+ <version>${rocketmq.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-common</artifactId>
+ <version>${rocketmq.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-netty-shaded</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>animal-sniffer-annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.lz4</groupId>
+ <artifactId>lz4-java</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-remoting</artifactId>
+ <version>${rocketmq.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-tools</artifactId>
+ <version>${rocketmq.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>xmlgraphics-commons</artifactId>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml
b/poms/bom/src/main/generated/flattened-full-pom.xml
index c4e90b0392..80476898c9 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -2659,6 +2659,11 @@
<artifactId>camel-robotframework</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<version>4.20.0</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>camel-rocketmq</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>4.20.0</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>camel-rss</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -5950,6 +5955,16 @@
<artifactId>camel-quarkus-robotframework-deployment</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<version>3.36.0-SNAPSHOT</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>camel-quarkus-rocketmq</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>3.36.0-SNAPSHOT</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>camel-quarkus-rocketmq-deployment</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>3.36.0-SNAPSHOT</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>camel-quarkus-rss</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -7515,6 +7530,12 @@
<groupId>commons-validator</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>commons-validator</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<version>1.10.1</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>commons-logging</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -7988,6 +8009,49 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-acl</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-client</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-common</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <exclusions>
+ <exclusion>
+ <groupId>io.grpc</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>grpc-netty-shaded</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>io.netty</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>netty-all</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.mojo</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>animal-sniffer-annotations</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.lz4</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>lz4-java</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-remoting</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-tools</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>xmlgraphics-commons</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -24727,21 +24791,6 @@
<artifactId>infinispan-core</artifactId><!--
io.debezium:debezium-bom:3.5.0.Final -->
<version>15.2.1.Final</version><!--
io.debezium:debezium-bom:3.5.0.Final -->
</dependency>
- <dependency>
- <groupId>org.apache.rocketmq</groupId><!--
io.debezium:debezium-bom:3.5.0.Final -->
- <artifactId>rocketmq-client</artifactId><!--
io.debezium:debezium-bom:3.5.0.Final -->
- <version>5.2.0</version><!-- io.debezium:debezium-bom:3.5.0.Final -->
- </dependency>
- <dependency>
- <groupId>org.apache.rocketmq</groupId><!--
io.debezium:debezium-bom:3.5.0.Final -->
- <artifactId>rocketmq-tools</artifactId><!--
io.debezium:debezium-bom:3.5.0.Final -->
- <version>5.2.0</version><!-- io.debezium:debezium-bom:3.5.0.Final -->
- </dependency>
- <dependency>
- <groupId>org.apache.rocketmq</groupId><!--
io.debezium:debezium-bom:3.5.0.Final -->
- <artifactId>rocketmq-remoting</artifactId><!--
io.debezium:debezium-bom:3.5.0.Final -->
- <version>5.2.0</version><!-- io.debezium:debezium-bom:3.5.0.Final -->
- </dependency>
<dependency>
<groupId>org.assertj</groupId><!--
io.debezium:debezium-bom:3.5.0.Final -->
<artifactId>assertj-core</artifactId><!--
io.debezium:debezium-bom:3.5.0.Final -->
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml
b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index ab6f9400d0..7062cc2b3b 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -2649,6 +2649,11 @@
<artifactId>camel-robotframework</artifactId>
<version>4.20.0</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-rocketmq</artifactId>
+ <version>4.20.0</version>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-rss</artifactId>
@@ -5929,6 +5934,16 @@
<artifactId>camel-quarkus-robotframework-deployment</artifactId>
<version>3.36.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq</artifactId>
+ <version>3.36.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-rocketmq-deployment</artifactId>
+ <version>3.36.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-rss</artifactId>
@@ -7479,6 +7494,12 @@
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.10.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
@@ -7917,6 +7938,44 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-acl</artifactId>
+ <version>5.3.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-client</artifactId>
+ <version>5.3.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-common</artifactId>
+ <version>5.3.2</version>
+ <exclusions>
+ <exclusion>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-netty-shaded</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>animal-sniffer-annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.lz4</groupId>
+ <artifactId>lz4-java</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId>
+ <artifactId>rocketmq-remoting</artifactId>
+ <version>5.3.2</version>
+ </dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>xmlgraphics-commons</artifactId>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index bd7953af52..6023d2fd81 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -2649,6 +2649,11 @@
<artifactId>camel-robotframework</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<version>4.20.0</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>camel-rocketmq</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>4.20.0</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>camel-rss</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -5929,6 +5934,16 @@
<artifactId>camel-quarkus-robotframework-deployment</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<version>3.36.0-SNAPSHOT</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>camel-quarkus-rocketmq</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>3.36.0-SNAPSHOT</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>camel-quarkus-rocketmq-deployment</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>3.36.0-SNAPSHOT</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>camel-quarkus-rss</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -7479,6 +7494,12 @@
<groupId>commons-validator</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>commons-validator</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<version>1.10.1</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>commons-logging</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -7917,6 +7938,44 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-acl</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-client</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-common</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <exclusions>
+ <exclusion>
+ <groupId>io.grpc</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>grpc-netty-shaded</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>io.netty</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>netty-all</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.mojo</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>animal-sniffer-annotations</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.lz4</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>lz4-java</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.rocketmq</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>rocketmq-remoting</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>5.3.2</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>xmlgraphics-commons</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
diff --git a/tooling/scripts/test-categories.yaml
b/tooling/scripts/test-categories.yaml
index b8d45da965..1c4804f4b3 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -256,4 +256,4 @@ group-13:
- slack
- twilio
- pgevent
-
+ - rocketmq