19
19
import java .util .List ;
20
20
import java .util .concurrent .CountDownLatch ;
21
21
import java .util .concurrent .TimeUnit ;
22
- import java .util .stream .Collectors ;
23
22
24
23
import com .rabbitmq .stream .Environment ;
25
24
import com .rabbitmq .stream .Message ;
26
25
import com .rabbitmq .stream .OffsetSpecification ;
26
+ import io .micrometer .common .KeyValues ;
27
27
import io .micrometer .observation .ObservationRegistry ;
28
28
import io .micrometer .tracing .Span .Kind ;
29
29
import io .micrometer .tracing .exporter .FinishedSpan ;
50
50
/**
51
51
* @author Gary Russell
52
52
* @author Artem Bilan
53
+ * @author Ngoc Nhan
53
54
* @since 3.0.5
54
55
*
55
56
*/
56
57
@ Testcontainers (disabledWithoutDocker = true )
57
58
public class TracingTests extends SampleTestRunner {
58
59
59
- private static final AbstractTestContainerTests atct = new AbstractTestContainerTests () {
60
- };
61
-
62
60
@ Override
63
61
public SampleTestRunnerConsumer yourCode () throws Exception {
64
62
return (bb , meterRegistry ) -> {
@@ -77,12 +75,14 @@ public SampleTestRunnerConsumer yourCode() throws Exception {
77
75
.hasSize (3 );
78
76
List <FinishedSpan > producerSpans = finishedSpans .stream ()
79
77
.filter (span -> span .getKind ().equals (Kind .PRODUCER ))
80
- .collect ( Collectors . toList () );
78
+ .toList ();
81
79
List <FinishedSpan > consumerSpans = finishedSpans .stream ()
82
80
.filter (span -> span .getKind ().equals (Kind .CONSUMER ))
83
- .collect ( Collectors . toList () );
81
+ .toList ();
84
82
SpanAssert .assertThat (producerSpans .get (0 ))
85
83
.hasTag ("spring.rabbit.stream.template.name" , "streamTemplate1" );
84
+ SpanAssert .assertThat (producerSpans .get (0 ))
85
+ .hasTag ("messaging.destination.name" , "trace.stream.queue1" );
86
86
SpanAssert .assertThat (producerSpans .get (0 ))
87
87
.hasRemoteServiceNameEqualTo ("RabbitMQ Stream" );
88
88
SpanAssert .assertThat (consumerSpans .get (0 ))
@@ -188,6 +188,13 @@ RabbitStreamTemplate streamTemplate1(Environment env) {
188
188
RabbitStreamTemplate template = new RabbitStreamTemplate (env , "trace.stream.queue1" );
189
189
template .setProducerCustomizer ((name , builder ) -> builder .name ("test" ));
190
190
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
+ });
191
198
return template ;
192
199
}
193
200
0 commit comments