diff --git a/CHANGES.md b/CHANGES.md
index eefe475bcb..f9dcab4ab5 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -11,6 +11,7 @@ Release Notes.
* Support collecting dubbo thread pool metrics
* Bump up byte-buddy to 1.12.19
* Upgrade agent test tools
+* [Breaking Change] Compatible with 3.x and 4.x RabbitMQ Client, rename `rabbitmq-5.x-plugin` to `rabbitmq-plugin`
#### Documentation
diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml
index e124d77fdb..9105865094 100644
--- a/apm-sniffer/apm-sdk-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/pom.xml
@@ -70,7 +70,7 @@
elasticsearch-6.x-plugin
elasticsearch-7.x-plugin
undertow-plugins
- rabbitmq-5.x-plugin
+ rabbitmq-plugin
dubbo-conflict-patch
canal-1.x-plugin
dubbo-2.7.x-plugin
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/pom.xml
similarity index 95%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/pom.xml
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/pom.xml
index b86547d6d3..ff1143aecd 100644
--- a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/pom.xml
@@ -25,8 +25,8 @@
4.0.0
- apm-rabbitmq-5.x-plugin
- rabbitmq-5.x-plugin
+ apm-rabbitmq-plugin
+ rabbitmq-plugin
jar
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptor.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptor.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptor.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptor.java
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptor.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptor.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptor.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptor.java
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/TracerConsumer.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/TracerConsumer.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/TracerConsumer.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/TracerConsumer.java
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/define/ChannelNInstrumentation.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/define/ChannelNInstrumentation.java
similarity index 97%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/define/ChannelNInstrumentation.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/define/ChannelNInstrumentation.java
index 5beceafbd4..86737aa6fb 100644
--- a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/define/ChannelNInstrumentation.java
+++ b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/define/ChannelNInstrumentation.java
@@ -45,7 +45,7 @@ public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
new ConstructorInterceptPoint() {
@Override
public ElementMatcher getConstructorMatcher() {
- return takesArgumentWithType(3, "com.rabbitmq.client.MetricsCollector");
+ return takesArgumentWithType(0, "com.rabbitmq.client.impl.AMQConnection");
}
@Override
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/resources/skywalking-plugin.def
similarity index 90%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/resources/skywalking-plugin.def
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/resources/skywalking-plugin.def
index c4987531b7..e48affc8f9 100644
--- a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/resources/skywalking-plugin.def
+++ b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/main/resources/skywalking-plugin.def
@@ -14,4 +14,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-rabbitmq-5.x=org.apache.skywalking.apm.plugin.rabbitmq.define.ChannelNInstrumentation
\ No newline at end of file
+rabbitmq=org.apache.skywalking.apm.plugin.rabbitmq.define.ChannelNInstrumentation
\ No newline at end of file
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptorTest.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptorTest.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/ChannelNConstructorInterceptorTest.java
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java
diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptorTest.java
similarity index 100%
rename from apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptorTest.java
rename to apm-sniffer/apm-sdk-plugin/rabbitmq-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQProducerInterceptorTest.java
diff --git a/docs/en/setup/service-agent/java-agent/Plugin-list.md b/docs/en/setup/service-agent/java-agent/Plugin-list.md
index 706f040ce8..748cd380cc 100644
--- a/docs/en/setup/service-agent/java-agent/Plugin-list.md
+++ b/docs/en/setup/service-agent/java-agent/Plugin-list.md
@@ -75,7 +75,7 @@
- pulsar-2.2-2.7
- quasar
- quartz-scheduler-2.x
-- rabbitmq-5.x
+- rabbitmq
- redisson-3.x
- resteasy-server-3.x
- resteasy-server-4.x
diff --git a/docs/en/setup/service-agent/java-agent/Supported-list.md b/docs/en/setup/service-agent/java-agent/Supported-list.md
index 0d43e9424e..1d616863ae 100644
--- a/docs/en/setup/service-agent/java-agent/Supported-list.md
+++ b/docs/en/setup/service-agent/java-agent/Supported-list.md
@@ -69,7 +69,7 @@ metrics based on the tracing data.
* [Kafka](http://kafka.apache.org) 0.11.0.0 -> 2.8.0
* [Spring-Kafka](https://github.com/spring-projects/spring-kafka) Spring Kafka Consumer 1.3.x -> 2.3.x (2.0.x and 2.1.x not tested and not recommended by [the official document](https://spring.io/projects/spring-kafka))
* [ActiveMQ](https://github.com/apache/activemq) 5.10.0 -> 5.15.4
- * [RabbitMQ](https://www.rabbitmq.com/) 5.x
+ * [RabbitMQ](https://www.rabbitmq.com/) 3.x-> 5.x
* [Pulsar](http://pulsar.apache.org) 2.2.x -> 2.9.x
* [NATS](https://github.com/nats-io/nats.java) 2.14.x -> 2.15.x
* Aliyun ONS 1.x (Optional¹)
diff --git a/test/plugin/scenarios/rabbitmq-scenario/src/main/java/org/apache/skywalking/apm/testcase/rabbitmq/controller/CaseController.java b/test/plugin/scenarios/rabbitmq-scenario/src/main/java/org/apache/skywalking/apm/testcase/rabbitmq/controller/CaseController.java
index 817c6e400f..12c62288ac 100644
--- a/test/plugin/scenarios/rabbitmq-scenario/src/main/java/org/apache/skywalking/apm/testcase/rabbitmq/controller/CaseController.java
+++ b/test/plugin/scenarios/rabbitmq-scenario/src/main/java/org/apache/skywalking/apm/testcase/rabbitmq/controller/CaseController.java
@@ -22,7 +22,10 @@
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
-import com.rabbitmq.client.DeliverCallback;
+import com.rabbitmq.client.DefaultConsumer;
+import com.rabbitmq.client.Envelope;
+
+import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -78,13 +81,16 @@ public String rabbitmqCase() {
LOGGER.info("Message has been published-------------->" + MESSAGE);
final CountDownLatch waitForConsume = new CountDownLatch(1);
- DeliverCallback deliverCallback = (consumerTag, delivery) -> {
- String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
- LOGGER.info("Message received-------------->" + message);
- waitForConsume.countDown();
+ DefaultConsumer callback = new DefaultConsumer(channel) {
+ @Override
+ public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
+ String message = new String(body, "UTF-8");
+ LOGGER.info("Message received-------------->" + message);
+ waitForConsume.countDown();
+ }
};
- channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
- });
+
+ channel.basicConsume(QUEUE_NAME, true, callback);
waitForConsume.await(5000L, TimeUnit.MILLISECONDS);
LOGGER.info("Message Consumed-------------->");
diff --git a/test/plugin/scenarios/rabbitmq-scenario/support-version.list b/test/plugin/scenarios/rabbitmq-scenario/support-version.list
index 0c77c7a519..a42c4d4e14 100644
--- a/test/plugin/scenarios/rabbitmq-scenario/support-version.list
+++ b/test/plugin/scenarios/rabbitmq-scenario/support-version.list
@@ -14,9 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-5.5.1
-5.4.3
-5.3.0
-5.2.0
-5.1.2
+5.16.0
5.0.0
+4.12.0
+4.0.0
+3.6.6
+3.0.0