Skip to content

Commit a64dcc2

Browse files
committed
Message listener containers only call Session.recover() in client acknowledge mode
Issue: SPR-13052 (cherry picked from commit c111bd7)
1 parent e5ccdfb commit a64dcc2

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
* consider setting "sessionTransacted" to "true" instead.
6464
* <li>"sessionAcknowledgeMode" set to "CLIENT_ACKNOWLEDGE":
6565
* Automatic message acknowledgment <i>after</i> successful listener execution;
66-
* no redelivery in case of exception thrown.
66+
* best-effort redelivery in case of exception thrown.
6767
* <li>"sessionAcknowledgeMode" set to "DUPS_OK_ACKNOWLEDGE":
6868
* <i>Lazy</i> message acknowledgment during or after listener execution;
6969
* <i>potential redelivery</i> in case of exception thrown.
@@ -469,6 +469,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
469469
rollbackIfNecessary(session);
470470
throw new MessageRejectedWhileStoppingException();
471471
}
472+
472473
try {
473474
invokeListener(session, message);
474475
}
@@ -498,6 +499,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
498499
@SuppressWarnings("rawtypes")
499500
protected void invokeListener(Session session, Message message) throws JMSException {
500501
Object listener = getMessageListener();
502+
501503
if (listener instanceof SessionAwareMessageListener) {
502504
doInvokeListener((SessionAwareMessageListener) listener, session, message);
503505
}
@@ -599,7 +601,7 @@ protected void rollbackIfNecessary(Session session) throws JMSException {
599601
JmsUtils.rollbackIfNecessary(session);
600602
}
601603
}
602-
else {
604+
else if (isClientAcknowledge(session)) {
603605
session.recover();
604606
}
605607
}
@@ -621,7 +623,7 @@ protected void rollbackOnExceptionIfNecessary(Session session, Throwable ex) thr
621623
JmsUtils.rollbackIfNecessary(session);
622624
}
623625
}
624-
else {
626+
else if (isClientAcknowledge(session)) {
625627
session.recover();
626628
}
627629
}

0 commit comments

Comments
 (0)