Browse Source

Message listener containers only call Session.recover() in client acknowledge mode

Issue: SPR-13056
pull/808/head
Juergen Hoeller 11 years ago
parent
commit
fee63fdfb8
  1. 8
      spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java

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

@ -69,7 +69,7 @@ import org.springframework.util.ReflectionUtils;
* consider setting "sessionTransacted" to "true" instead. * consider setting "sessionTransacted" to "true" instead.
* <li>"sessionAcknowledgeMode" set to "CLIENT_ACKNOWLEDGE": * <li>"sessionAcknowledgeMode" set to "CLIENT_ACKNOWLEDGE":
* Automatic message acknowledgment <i>after</i> successful listener execution; * Automatic message acknowledgment <i>after</i> successful listener execution;
* no redelivery in case of exception thrown. * best-effort redelivery in case of exception thrown.
* <li>"sessionAcknowledgeMode" set to "DUPS_OK_ACKNOWLEDGE": * <li>"sessionAcknowledgeMode" set to "DUPS_OK_ACKNOWLEDGE":
* <i>Lazy</i> message acknowledgment during or after listener execution; * <i>Lazy</i> message acknowledgment during or after listener execution;
* <i>potential redelivery</i> in case of exception thrown. * <i>potential redelivery</i> in case of exception thrown.
@ -631,6 +631,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
rollbackIfNecessary(session); rollbackIfNecessary(session);
throw new MessageRejectedWhileStoppingException(); throw new MessageRejectedWhileStoppingException();
} }
try { try {
invokeListener(session, message); invokeListener(session, message);
} }
@ -660,6 +661,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
protected void invokeListener(Session session, Message message) throws JMSException { protected void invokeListener(Session session, Message message) throws JMSException {
Object listener = getMessageListener(); Object listener = getMessageListener();
if (listener instanceof SessionAwareMessageListener) { if (listener instanceof SessionAwareMessageListener) {
doInvokeListener((SessionAwareMessageListener) listener, session, message); doInvokeListener((SessionAwareMessageListener) listener, session, message);
} }
@ -761,7 +763,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
JmsUtils.rollbackIfNecessary(session); JmsUtils.rollbackIfNecessary(session);
} }
} }
else { else if (isClientAcknowledge(session)) {
session.recover(); session.recover();
} }
} }
@ -783,7 +785,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
JmsUtils.rollbackIfNecessary(session); JmsUtils.rollbackIfNecessary(session);
} }
} }
else { else if (isClientAcknowledge(session)) {
session.recover(); session.recover();
} }
} }

Loading…
Cancel
Save