From c29b2552af286b4e2b79116463858243b09e6a3b Mon Sep 17 00:00:00 2001 From: Mathieu Houtreille <49685132+houtreille@users.noreply.github.com> Date: Thu, 6 Jul 2023 10:23:44 +0200 Subject: [PATCH 1/2] Update RabbitMqReceiveTracingInterceptor.java triggering exception on purpose --- .../spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java b/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java index a75ecdb..2ab8d04 100644 --- a/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java +++ b/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java @@ -37,7 +37,7 @@ public class RabbitMqReceiveTracingInterceptor implements MethodInterceptor, Aft @Override public Object invoke(MethodInvocation methodInvocation) throws Throwable { - Message message = (Message) methodInvocation.getArguments()[1]; + Message message = (Message) methodInvocation.getArguments()[0]; MessageProperties messageProperties = message.getMessageProperties(); Optional child = RabbitMqTracingUtils.buildReceiveSpan(messageProperties, tracer); From 995489e4b8e38ee7837e025af3a2de374b30bb98 Mon Sep 17 00:00:00 2001 From: mhoutreille Date: Thu, 6 Jul 2023 11:24:27 +0200 Subject: [PATCH 2/2] adding batch management to interceptor --- opentracing-spring-rabbitmq-it/pom.xml | 2 +- opentracing-spring-rabbitmq-starter/pom.xml | 2 +- opentracing-spring-rabbitmq/pom.xml | 2 +- .../RabbitMqReceiveTracingInterceptor.java | 16 +++++++++++++++- pom.xml | 2 +- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/opentracing-spring-rabbitmq-it/pom.xml b/opentracing-spring-rabbitmq-it/pom.xml index f7da5c7..ab920d8 100644 --- a/opentracing-spring-rabbitmq-it/pom.xml +++ b/opentracing-spring-rabbitmq-it/pom.xml @@ -19,7 +19,7 @@ io.opentracing.contrib opentracing-spring-rabbitmq-parent - 3.0.2-SNAPSHOT + 3.0.2-BATCH opentracing-spring-rabbitmq-it diff --git a/opentracing-spring-rabbitmq-starter/pom.xml b/opentracing-spring-rabbitmq-starter/pom.xml index 3369883..ef9d127 100644 --- a/opentracing-spring-rabbitmq-starter/pom.xml +++ b/opentracing-spring-rabbitmq-starter/pom.xml @@ -19,7 +19,7 @@ io.opentracing.contrib opentracing-spring-rabbitmq-parent - 3.0.2-SNAPSHOT + 3.0.2-BATCH opentracing-spring-rabbitmq-starter diff --git a/opentracing-spring-rabbitmq/pom.xml b/opentracing-spring-rabbitmq/pom.xml index 877680c..418faad 100644 --- a/opentracing-spring-rabbitmq/pom.xml +++ b/opentracing-spring-rabbitmq/pom.xml @@ -19,7 +19,7 @@ io.opentracing.contrib opentracing-spring-rabbitmq-parent - 3.0.2-SNAPSHOT + 3.0.2-BATCH opentracing-spring-rabbitmq diff --git a/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java b/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java index 2ab8d04..72466ba 100644 --- a/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java +++ b/opentracing-spring-rabbitmq/src/main/java/io/opentracing/contrib/spring/rabbitmq/RabbitMqReceiveTracingInterceptor.java @@ -26,6 +26,7 @@ import org.springframework.aop.AfterAdvice; import org.springframework.aop.BeforeAdvice; +import java.util.List; /** * @author Gilles Robert */ @@ -35,9 +36,22 @@ public class RabbitMqReceiveTracingInterceptor implements MethodInterceptor, Aft private final Tracer tracer; private final RabbitMqSpanDecorator spanDecorator; + + /** + * OpenTracing original class doesnt handle batch messaging + * code is from https://github.com/openzipkin/brave/blob/master/instrumentation/spring-rabbit/src/main/java/brave/spring/rabbit/TracingRabbitListenerAdvice.java + */ + @Override public Object invoke(MethodInvocation methodInvocation) throws Throwable { - Message message = (Message) methodInvocation.getArguments()[0]; + + Message message = null; + if (methodInvocation.getArguments()[1] instanceof List) { + message = ((List) methodInvocation.getArguments()[1]).get(0); + } else { + message = (Message) methodInvocation.getArguments()[1]; + } + MessageProperties messageProperties = message.getMessageProperties(); Optional child = RabbitMqTracingUtils.buildReceiveSpan(messageProperties, tracer); diff --git a/pom.xml b/pom.xml index 32478be..eb556b2 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ io.opentracing.contrib opentracing-spring-rabbitmq-parent - 3.0.2-SNAPSHOT + 3.0.2-BATCH pom ${project.groupId}:${project.artifactId}