Skip to content

Commit c111bd7

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

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
@@ -69,7 +69,7 @@
6969
* consider setting "sessionTransacted" to "true" instead.
7070
* <li>"sessionAcknowledgeMode" set to "CLIENT_ACKNOWLEDGE":
7171
* Automatic message acknowledgment <i>after</i> successful listener execution;
72-
* no redelivery in case of exception thrown.
72+
* best-effort redelivery in case of exception thrown.
7373
* <li>"sessionAcknowledgeMode" set to "DUPS_OK_ACKNOWLEDGE":
7474
* <i>Lazy</i> message acknowledgment during or after listener execution;
7575
* <i>potential redelivery</i> in case of exception thrown.
@@ -601,6 +601,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
601601
rollbackIfNecessary(session);
602602
throw new MessageRejectedWhileStoppingException();
603603
}
604+
604605
try {
605606
invokeListener(session, message);
606607
}
@@ -630,6 +631,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
630631
@SuppressWarnings("rawtypes")
631632
protected void invokeListener(Session session, Message message) throws JMSException {
632633
Object listener = getMessageListener();
634+
633635
if (listener instanceof SessionAwareMessageListener) {
634636
doInvokeListener((SessionAwareMessageListener) listener, session, message);
635637
}
@@ -731,7 +733,7 @@ protected void rollbackIfNecessary(Session session) throws JMSException {
731733
JmsUtils.rollbackIfNecessary(session);
732734
}
733735
}
734-
else {
736+
else if (isClientAcknowledge(session)) {
735737
session.recover();
736738
}
737739
}
@@ -753,7 +755,7 @@ protected void rollbackOnExceptionIfNecessary(Session session, Throwable ex) thr
753755
JmsUtils.rollbackIfNecessary(session);
754756
}
755757
}
756-
else {
758+
else if (isClientAcknowledge(session)) {
757759
session.recover();
758760
}
759761
}

0 commit comments

Comments
 (0)