Ensure that Observation is stopped and scope is closed in doReceiveAndExecute()
Closes gh-31798
This commit is contained in:
@@ -315,6 +315,8 @@ public abstract class AbstractPollingMessageListenerContainer extends AbstractMe
|
||||
}
|
||||
Message message = receiveMessage(consumerToUse);
|
||||
if (message != null) {
|
||||
boolean exposeResource = (!transactional && isExposeListenerSession() &&
|
||||
!TransactionSynchronizationManager.hasResource(obtainConnectionFactory()));
|
||||
Observation observation = createObservation(message).start();
|
||||
Observation.Scope scope = observation.openScope();
|
||||
if (logger.isDebugEnabled()) {
|
||||
@@ -322,14 +324,12 @@ public abstract class AbstractPollingMessageListenerContainer extends AbstractMe
|
||||
consumerToUse + "] of " + (transactional ? "transactional " : "") + "session [" +
|
||||
sessionToUse + "]");
|
||||
}
|
||||
messageReceived(invoker, sessionToUse);
|
||||
boolean exposeResource = (!transactional && isExposeListenerSession() &&
|
||||
!TransactionSynchronizationManager.hasResource(obtainConnectionFactory()));
|
||||
if (exposeResource) {
|
||||
TransactionSynchronizationManager.bindResource(
|
||||
obtainConnectionFactory(), new LocallyExposedJmsResourceHolder(sessionToUse));
|
||||
}
|
||||
try {
|
||||
messageReceived(invoker, sessionToUse);
|
||||
if (exposeResource) {
|
||||
TransactionSynchronizationManager.bindResource(
|
||||
obtainConnectionFactory(), new LocallyExposedJmsResourceHolder(sessionToUse));
|
||||
}
|
||||
doExecuteListener(sessionToUse, message);
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
|
||||
Reference in New Issue
Block a user