Closed
Description
Lubos Krnac opened SPR-13255 and commented
I found this code in JmsTemplate.doReceive(Session session, MessageConsumer consumer):
Message message = doReceive(consumer, timeout);
if (session.getTransacted()) {
// Commit necessary - but avoid commit call within a JTA transaction.
if (isSessionLocallyTransacted(session)) {
// Transacted session created by this template -> commit.
JmsUtils.commitIfNecessary(session);
}
}
else if (isClientAcknowledge(session)) {
// Manually acknowledge message, if any.
if (message != null) {
message.acknowledge();
}
}
Why is message acknowledged straight after reception before returning to application code? That effectively means we can't use JmsTemplate with CLIENT_ACKNOWLEDGE for bulk processing of messages. Does it relates somehow to #17587?
Issue Links:
- JMS message always acknowledged even with CLIENT_ACKNOWLEDGE [SPR-12995] #17587 JMS message always acknowledged even with CLIENT_ACKNOWLEDGE