Migrate RabbitMQ messaging telemetry to v1.43 preview#19274
Conversation
Pull request dashboard statusStatus last refreshed: 2026-07-22 20:45:48 UTC.
This automated status or its linked feedback items may be incorrect. If something looks wrong, please report it with the result you expected. |
7927e3f to
1068b31
Compare
There was a problem hiding this comment.
Pull request overview
Migrates RabbitMQ and Spring Rabbit instrumentation toward v1.43 preview messaging semantics.
Changes:
- Adopts new messaging operation types and receive span kind.
- Uses shared process topology for consumer spans.
- Adds targeted preview validation for receive span kind.
Reviewed changes
Copilot reviewed 35 out of 35 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
instrumentation/rabbitmq-2.7/javaagent/build.gradle.kts |
Adds preview test execution. |
instrumentation/rabbitmq-2.7/javaagent/src/main/.../RabbitSingletons.java |
Migrates RabbitMQ instrumenters. |
instrumentation/rabbitmq-2.7/javaagent/src/test/.../RabbitMqTest.java |
Tests preview receive span kind. |
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/.../SpringRabbitSingletons.java |
Migrates Spring Rabbit processing instrumentation. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 41 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMessageAttributesGetter.java:94
- [General] This misses anonymous queues on the module's supported older Spring AMQP versions. The module supports
spring-rabbit:1.0.0.RELEASE(build.gradle.kts:15), whereMessageProperties#getConsumerQueue()is absent, so this helper returnsnull; the generatedamq.gen-*/spring.gen-*routing key then enters the preview span name instead of producing justprocess. Also fall back to the received routing key when classifying the destination.
4817ea8 to
e6bd0d7
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 41 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMessageAttributesGetter.java:93
- [General] On the supported Spring AMQP 1.0 baseline (
build.gradle.kts:15),MessagePropertieshas nogetConsumerQueue(), so this always checksnull. For an anonymous queue the generated name is still available as the received routing key; preview mode will therefore emitprocess spring.gen-…instead of omitting the anonymous destination. Fall back to the routing key when the consumer-queue accessor is unavailable.
e6bd0d7 to
a515ee0
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 41 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMessageAttributesGetter.java:94
- [General] On supported Spring AMQP versions that predate
MessageProperties.getConsumerQueue()(the reason this accessor is reflective),getConsumerQueue(...)always returns null. A generated default-exchange queue is still available asreceivedRoutingKey, so this currently classifies it as non-anonymous and emitsprocess <random queue>in preview mode. Fall back to the routing key when the consumer-queue accessor is unavailable.
a515ee0 to
ee41851
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 41 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMessageAttributesGetter.java:94
- [General] On the module's supported baseline (
spring-rabbit:1.0.0.RELEASE),MessageProperties.getConsumerQueue()does not exist, so the reflective helper always returnsnull. Anonymous baseline queues still expose their generatedamq.gen-*/spring.gen-*name throughgetReceivedRoutingKey(), but this method classifies them as non-anonymous and the stable span name becomes high-cardinality (process <generated id>). Fall back to the received routing key when the consumer-queue method is unavailable.
ee41851 to
b902f07
Compare
b902f07 to
b43d960
Compare
ec5eb7f to
0aa3b99
Compare
0aa3b99 to
7130732
Compare
7130732 to
a178037
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 48 out of 48 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMessageAttributesGetter.java:93
- [General] The module supports Spring Rabbit 1.0.0, where
MessagePropertieshas nogetConsumerQueue(), so this always classifies its UUID-basedAnonymousQueueas named. That makes preview process spans include the random UUID in their name and omitmessaging.destination.anonymous=true. Fall back to the received routing key, which Spring Rabbit 1.0 does expose, when the consumer-queue method is unavailable.
a178037 to
000c867
Compare
000c867 to
6249d50
Compare
6249d50 to
8a9f68d
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 49 out of 49 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
instrumentation/spring/spring-rabbit-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMessageAttributesGetter.java:94
- [General] On the supported Spring AMQP 1.0 baseline,
MessagePropertieshas nogetConsumerQueue(), so this always checksnull. For default-exchange deliveries to generated queues,getReceivedRoutingKey()still contains the generated queue name; preview mode therefore emitsprocess <random-name>and omitsmessaging.destination.anonymous. Fall back to the routing key when the reflected queue is unavailable and the received exchange is the default exchange.
Depends on #19268.
Dependency baseline:
9b5ec57607668f417ce57a15c2281897fcb3f774.Review only:
9b5ec57607668f417ce57a15c2281897fcb3f774..8a9f68d1154772e955713bd4b68e20415896e3dc.Exactly one RabbitMQ commit. Core and Spring Rabbit use typed telemetry, generated destination handling, routing-key/delivery-tag attributes, and stable server identity. Generic commands avoid deprecated null-operation builders. Preview metadata labels match actual JVM args.
basicGetsuppliesmessaging.batch.message_count=0/1through an operation-listener-only extractor, so empty receives do not increment counters and the count attribute is not added to spans.Validated: full RabbitMQ and Spring Rabbit checks across legacy/stable/indy, including metadata and Spotless.