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