From a7271ed2b21b985beb49e8fbee1175855e1225eb Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 23 May 2019 20:24:01 -0400 Subject: [PATCH] Use default service name for RabbitMQ consumer So spans parented by consumer span had reasonable service name --- .../instrumentation/rabbitmq/amqp/RabbitDecorator.java | 10 ++++++++++ .../src/test/groovy/RabbitMQTest.groovy | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java index 66b3122f5b..10160b6488 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java @@ -27,6 +27,16 @@ public class RabbitDecorator extends ClientDecorator { public static final RabbitDecorator CONSUMER_DECORATE = new RabbitDecorator() { + @Override + protected String service() { + /* + Use default service name. Common use-case here is to have consumer span parent + children spans in instrumented application. Since service name is inherited it makes + sense to default that to application service name rather than 'rabbitmq'. + */ + return null; + } + @Override protected String spanKind() { return Tags.SPAN_KIND_CONSUMER; diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/test/groovy/RabbitMQTest.groovy b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/test/groovy/RabbitMQTest.groovy index fe1db12e0b..558520c17a 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/test/groovy/RabbitMQTest.groovy +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/test/groovy/RabbitMQTest.groovy @@ -341,7 +341,14 @@ class RabbitMQTest extends AgentTestRunner { String errorMsg = null ) { trace.span(index) { - serviceName "rabbitmq" + switch (span.tags["amqp.command"]) { + case "basic.get": + case "basic.deliver": + serviceName "unnamed-java-app" + break + default: + serviceName "rabbitmq" + } operationName "amqp.command" resourceName resource switch (span.tags["amqp.command"]) {