Skip to content

Commit ab2f1f8

Browse files
committed
Merge branch '6.1.x'
2 parents a1dd2e7 + 84e762b commit ab2f1f8

File tree

3 files changed

+17
-16
lines changed

3 files changed

+17
-16
lines changed

spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -676,16 +676,21 @@ public void setupMessageListener(Object messageListener) {
676676
* @see #handleListenerException
677677
*/
678678
protected void executeListener(Session session, Message message) {
679-
createObservation(message).observe(() -> {
680-
try {
681-
doExecuteListener(session, message);
682-
}
683-
catch (Throwable ex) {
684-
handleListenerException(ex);
685-
}
686-
});
679+
try {
680+
doExecuteListener(session, message);
681+
}
682+
catch (Throwable ex) {
683+
handleListenerException(ex);
684+
}
687685
}
688686

687+
/**
688+
* Create, but do not start an {@link Observation} for JMS message processing.
689+
* <p>This will return a "no-op" observation if Micrometer Jakarta instrumentation
690+
* is not available or if no Observation Registry has been configured.
691+
* @param message the message to be observed
692+
* @since 6.1
693+
*/
689694
protected Observation createObservation(Message message) {
690695
if (micrometerJakartaPresent && this.observationRegistry != null) {
691696
return ObservationFactory.create(this.observationRegistry, message);
@@ -770,7 +775,6 @@ protected void doInvokeListener(SessionAwareMessageListener listener, Session se
770775

771776
Connection conToClose = null;
772777
Session sessionToClose = null;
773-
Observation observation = createObservation(message);
774778
try {
775779
Session sessionToUse = session;
776780
if (micrometerJakartaPresent && this.observationRegistry != null) {
@@ -782,7 +786,6 @@ protected void doInvokeListener(SessionAwareMessageListener listener, Session se
782786
sessionToClose = createSession(conToClose);
783787
sessionToUse = sessionToClose;
784788
}
785-
observation.start();
786789
// Actually invoke the message listener...
787790
listener.onMessage(message, sessionToUse);
788791
// Clean up specially exposed Session, if any.
@@ -794,11 +797,9 @@ protected void doInvokeListener(SessionAwareMessageListener listener, Session se
794797
}
795798
}
796799
catch (JMSException exc) {
797-
observation.error(exc);
798800
throw exc;
799801
}
800802
finally {
801-
observation.stop();
802803
JmsUtils.closeSession(sessionToClose);
803804
JmsUtils.closeConnection(conToClose);
804805
}

spring-jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ protected void processMessage(Message message, Session session) {
353353
connectionFactory, new LocallyExposedJmsResourceHolder(session));
354354
}
355355
try {
356-
executeListener(session, message);
356+
createObservation(message).observe(() -> executeListener(session, message));
357357
}
358358
finally {
359359
if (exposeResource) {

spring-jms/src/test/java/org/springframework/jms/listener/MessageListenerContainerObservationTests.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ void shouldRecordJmsProcessObservations(AbstractMessageListenerContainer listene
7474
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
7575
jmsTemplate.convertAndSend("spring.test.observation", "message content");
7676
latch.await(2, TimeUnit.SECONDS);
77-
assertThat(registry).hasObservationWithNameEqualTo("jms.message.process")
77+
assertThat(registry).hasNumberOfObservationsWithNameEqualTo("jms.message.process", 1)
78+
.hasObservationWithNameEqualTo("jms.message.process")
7879
.that()
7980
.hasHighCardinalityKeyValue("messaging.destination.name", "spring.test.observation");
8081
assertThat(registry).hasNumberOfObservationsEqualTo(1);
@@ -98,8 +99,7 @@ void shouldRecordJmsPublishObservations(AbstractMessageListenerContainer listene
9899
TextMessage response = (TextMessage) jmsTemplate.sendAndReceive("spring.test.observation",
99100
session -> session.createTextMessage("test request"));
100101

101-
// request received by listener and response received by template
102-
assertThat(registry).hasNumberOfObservationsWithNameEqualTo("jms.message.process", 2);
102+
assertThat(registry).hasNumberOfObservationsWithNameEqualTo("jms.message.process", 1);
103103
// response sent to the template
104104
assertThat(registry).hasNumberOfObservationsWithNameEqualTo("jms.message.publish", 1);
105105

0 commit comments

Comments
 (0)