Skip to content

CLIENT_ACKNOWLEDGE with JmsTemplate - implicit message acknowledge each read [SPR-13255] #17846

Closed
@spring-projects-issues

Description

@spring-projects-issues

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:

Metadata

Metadata

Assignees

Labels

in: messagingIssues in messaging modules (jms, messaging)status: declinedA suggestion or change that we don't feel we should currently apply

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions