Message listener containers only call Session.recover() in client acknowledge mode
Issue: SPR-13056
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user