Skip to content

Commit fee63fd

Browse files
committed
Message listener containers only call Session.recover() in client acknowledge mode
Issue: SPR-13056
1 parent 5255e7a commit fee63fd

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.
@@ -631,6 +631,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
631631
rollbackIfNecessary(session);
632632
throw new MessageRejectedWhileStoppingException();
633633
}
634+
634635
try {
635636
invokeListener(session, message);
636637
}
@@ -660,6 +661,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
660661
@SuppressWarnings("rawtypes")
661662
protected void invokeListener(Session session, Message message) throws JMSException {
662663
Object listener = getMessageListener();
664+
663665
if (listener instanceof SessionAwareMessageListener) {
664666
doInvokeListener((SessionAwareMessageListener) listener, session, message);
665667
}
@@ -761,7 +763,7 @@ protected void rollbackIfNecessary(Session session) throws JMSException {
761763
JmsUtils.rollbackIfNecessary(session);
762764
}
763765
}
764-
else {
766+
else if (isClientAcknowledge(session)) {
765767
session.recover();
766768
}
767769
}
@@ -783,7 +785,7 @@ protected void rollbackOnExceptionIfNecessary(Session session, Throwable ex) thr
783785
JmsUtils.rollbackIfNecessary(session);
784786
}
785787
}
786-
else {
788+
else if (isClientAcknowledge(session)) {
787789
session.recover();
788790
}
789791
}

0 commit comments

Comments
 (0)