@@ -76,6 +76,7 @@ void shouldRecordJmsProcessObservations(AbstractMessageListenerContainer listene
76
76
assertThat (registry ).hasObservationWithNameEqualTo ("jms.message.process" )
77
77
.that ()
78
78
.hasHighCardinalityKeyValue ("messaging.destination.name" , "spring.test.observation" );
79
+ assertThat (registry ).hasNumberOfObservationsEqualTo (1 );
79
80
listenerContainer .stop ();
80
81
listenerContainer .shutdown ();
81
82
}
@@ -103,7 +104,37 @@ void shouldHaveObservationScopeInErrorHandler(AbstractMessageListenerContainer l
103
104
Assertions .assertThat (observationInErrorHandler .get ()).isNotNull ();
104
105
assertThat (registry ).hasObservationWithNameEqualTo ("jms.message.process" )
105
106
.that ()
106
- .hasHighCardinalityKeyValue ("messaging.destination.name" , "spring.test.observation" );
107
+ .hasHighCardinalityKeyValue ("messaging.destination.name" , "spring.test.observation" )
108
+ .hasLowCardinalityKeyValue ("exception" , "none" );
109
+ assertThat (registry ).hasNumberOfObservationsEqualTo (1 );
110
+ listenerContainer .stop ();
111
+ listenerContainer .shutdown ();
112
+ }
113
+
114
+ @ ParameterizedTest (name = "[{index}] {0}" )
115
+ @ MethodSource ("listenerContainers" )
116
+ void shouldHaveObservationErrorWhenRethrown (AbstractMessageListenerContainer listenerContainer ) throws Exception {
117
+ JmsTemplate jmsTemplate = new JmsTemplate (connectionFactory );
118
+ jmsTemplate .convertAndSend ("spring.test.observation" , "message content" );
119
+ CountDownLatch latch = new CountDownLatch (1 );
120
+ listenerContainer .setConnectionFactory (connectionFactory );
121
+ listenerContainer .setObservationRegistry (registry );
122
+ listenerContainer .setDestinationName ("spring.test.observation" );
123
+ listenerContainer .setMessageListener ((MessageListener ) message -> {
124
+ throw new IllegalStateException ("error" );
125
+ });
126
+ listenerContainer .setErrorHandler (error -> {
127
+ latch .countDown ();
128
+ throw new IllegalStateException ("not handled" );
129
+ });
130
+ listenerContainer .afterPropertiesSet ();
131
+ listenerContainer .start ();
132
+ latch .await (2 , TimeUnit .SECONDS );
133
+ assertThat (registry ).hasObservationWithNameEqualTo ("jms.message.process" )
134
+ .that ()
135
+ .hasHighCardinalityKeyValue ("messaging.destination.name" , "spring.test.observation" )
136
+ .hasLowCardinalityKeyValue ("exception" , "IllegalStateException" );
137
+ assertThat (registry ).hasNumberOfObservationsEqualTo (1 );
107
138
listenerContainer .stop ();
108
139
listenerContainer .shutdown ();
109
140
}
0 commit comments