diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java index 6431b8975808..2dc0e2350012 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java @@ -252,9 +252,6 @@ void testRocketmqProduceAndConsume() throws Exception { @Test void testRocketmqProduceAndBatchConsume() throws Exception { - // context propagation doesn't work for batch messages in 5.3.4 - Assumptions.assumeFalse(Boolean.getBoolean("testLatestDeps")); - consumer.setConsumeMessageBatchMaxSize(2); // This test assumes that messages are sent and received as a batch. Occasionally it happens // that the messages are not received as a batch, but one by one. This doesn't match what the diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java index 733da234b4b9..5c2c925655f9 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java @@ -49,8 +49,14 @@ public void onSuccess(ReceiveMessageResult receiveMessageResult) { null, timer.startTime(), timer.now()); + // For batch messages, each message should have its own context that properly + // links to the individual producer spans through context propagation for (MessageView messageView : messageViews) { - VirtualFieldStore.setContextByMessage(messageView, context); + // Extract context from individual message properties (trace headers) + Context messageContext = RocketMqSingletons.propagators() + .getTextMapPropagator() + .extract(context, messageView, MessageMapGetter.INSTANCE); + VirtualFieldStore.setContextByMessage(messageView, messageContext); } } }