Skip to content

Commit be22e2e

Browse files
ngocnhan-tran1996spring-builds
authored andcommitted
GH-3115: Add observationConvention Setter for RabbitStreamTemplate
Fixes: #3115 * Update ObservationConvention setter javadoc Signed-off-by: Tran Ngoc Nhan <[email protected]> (cherry picked from commit e97976c)
1 parent 2de8b9d commit be22e2e

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

spring-rabbit-stream/src/main/java/org/springframework/rabbit/stream/producer/RabbitStreamTemplate.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,14 @@ public void setObservationEnabled(boolean observationEnabled) {
217217
this.observationEnabled = observationEnabled;
218218
}
219219

220+
/**
221+
* Set a custom {@link RabbitStreamTemplateObservationConvention}.
222+
* @param observationConvention the convention.
223+
* @since 3.2.6
224+
*/
225+
public void setObservationConvention(RabbitStreamTemplateObservationConvention observationConvention) {
226+
this.observationConvention = observationConvention;
227+
}
220228

221229
@Override
222230
public MessageConverter messageConverter() {

spring-rabbit-stream/src/test/java/org/springframework/rabbit/stream/micrometer/TracingTests.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
import java.util.List;
2020
import java.util.concurrent.CountDownLatch;
2121
import java.util.concurrent.TimeUnit;
22-
import java.util.stream.Collectors;
2322

2423
import com.rabbitmq.stream.Environment;
2524
import com.rabbitmq.stream.Message;
2625
import com.rabbitmq.stream.OffsetSpecification;
26+
import io.micrometer.common.KeyValues;
2727
import io.micrometer.observation.ObservationRegistry;
2828
import io.micrometer.tracing.Span.Kind;
2929
import io.micrometer.tracing.exporter.FinishedSpan;
@@ -50,15 +50,13 @@
5050
/**
5151
* @author Gary Russell
5252
* @author Artem Bilan
53+
* @author Ngoc Nhan
5354
* @since 3.0.5
5455
*
5556
*/
5657
@Testcontainers(disabledWithoutDocker = true)
5758
public class TracingTests extends SampleTestRunner {
5859

59-
private static final AbstractTestContainerTests atct = new AbstractTestContainerTests() {
60-
};
61-
6260
@Override
6361
public SampleTestRunnerConsumer yourCode() throws Exception {
6462
return (bb, meterRegistry) -> {
@@ -77,12 +75,14 @@ public SampleTestRunnerConsumer yourCode() throws Exception {
7775
.hasSize(3);
7876
List<FinishedSpan> producerSpans = finishedSpans.stream()
7977
.filter(span -> span.getKind().equals(Kind.PRODUCER))
80-
.collect(Collectors.toList());
78+
.toList();
8179
List<FinishedSpan> consumerSpans = finishedSpans.stream()
8280
.filter(span -> span.getKind().equals(Kind.CONSUMER))
83-
.collect(Collectors.toList());
81+
.toList();
8482
SpanAssert.assertThat(producerSpans.get(0))
8583
.hasTag("spring.rabbit.stream.template.name", "streamTemplate1");
84+
SpanAssert.assertThat(producerSpans.get(0))
85+
.hasTag("messaging.destination.name", "trace.stream.queue1");
8686
SpanAssert.assertThat(producerSpans.get(0))
8787
.hasRemoteServiceNameEqualTo("RabbitMQ Stream");
8888
SpanAssert.assertThat(consumerSpans.get(0))
@@ -188,6 +188,13 @@ RabbitStreamTemplate streamTemplate1(Environment env) {
188188
RabbitStreamTemplate template = new RabbitStreamTemplate(env, "trace.stream.queue1");
189189
template.setProducerCustomizer((name, builder) -> builder.name("test"));
190190
template.setObservationEnabled(true);
191+
template.setObservationConvention(new RabbitStreamTemplateObservation.DefaultRabbitStreamTemplateObservationConvention() {
192+
@Override
193+
public KeyValues getLowCardinalityKeyValues(RabbitStreamMessageSenderContext context) {
194+
return super.getLowCardinalityKeyValues(context)
195+
.and("messaging.destination.name", context.getDestination());
196+
}
197+
});
191198
return template;
192199
}
193200

0 commit comments

Comments
 (0)