DefaultMessageListenerContainer triggers Session commit even if no message has been received (SPR-7366)
This commit is contained in:
parent
f25a04c69c
commit
b456bc107b
|
|
@ -575,7 +575,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
|
||||||
JmsUtils.commitIfNecessary(session);
|
JmsUtils.commitIfNecessary(session);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (isClientAcknowledge(session)) {
|
else if (message != null && isClientAcknowledge(session)) {
|
||||||
message.acknowledge();
|
message.acknowledge();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -341,6 +341,7 @@ public abstract class AbstractPollingMessageListenerContainer extends AbstractMe
|
||||||
TransactionSynchronizationManager.unbindResource(getConnectionFactory());
|
TransactionSynchronizationManager.unbindResource(getConnectionFactory());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Indicate that a message has been received.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -349,6 +350,9 @@ public abstract class AbstractPollingMessageListenerContainer extends AbstractMe
|
||||||
"session [" + sessionToUse + "] did not receive a message");
|
"session [" + sessionToUse + "] did not receive a message");
|
||||||
}
|
}
|
||||||
noMessageReceived(invoker, sessionToUse);
|
noMessageReceived(invoker, sessionToUse);
|
||||||
|
// Nevertheless call commit, in order to reset the transaction timeout (if any).
|
||||||
|
commitIfNecessary(session, message);
|
||||||
|
// Indicate that no message has been received.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -416,9 +420,9 @@ public abstract class AbstractPollingMessageListenerContainer extends AbstractMe
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Template method that gets called right <i>no</i> message has been received,
|
* Template method that gets called when <i>no</i> message has been received,
|
||||||
* before attempting to process it. Allows subclasses to react to the event
|
* before returning to the receive loop again. Allows subclasses to react to
|
||||||
* of an actual incoming message, for example marking .
|
* the event of no incoming message, for example marking the invoker as idle.
|
||||||
* @param invoker the invoker object (passed through)
|
* @param invoker the invoker object (passed through)
|
||||||
* @param session the receiving JMS Session
|
* @param session the receiving JMS Session
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue