diff --git a/src/Spring/Spring.Messaging.Ems/Messaging/Ems/Listener/AbstractMessageListenerContainer.cs b/src/Spring/Spring.Messaging.Ems/Messaging/Ems/Listener/AbstractMessageListenerContainer.cs index 8250658a..0162fafb 100644 --- a/src/Spring/Spring.Messaging.Ems/Messaging/Ems/Listener/AbstractMessageListenerContainer.cs +++ b/src/Spring/Spring.Messaging.Ems/Messaging/Ems/Listener/AbstractMessageListenerContainer.cs @@ -506,6 +506,10 @@ namespace Spring.Messaging.Ems.Listener // Transacted session created by this container -> rollback EmsUtils.RollbackIfNecessary(session); } + else if (IsClientAcknowledge(session)) + { + session.Recover(); + } } /// /// Perform a rollback, handling rollback excepitons properly. @@ -526,7 +530,12 @@ namespace Spring.Messaging.Ems.Listener } EmsUtils.RollbackIfNecessary(session); } - } catch (EMSException) + else if (IsClientAcknowledge(session)) + { + session.Recover(); + } + } + catch (EMSException) { logger.Error("Application exception overriden by rollback exception", ex); throw; diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/AbstractMessageListenerContainer.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/AbstractMessageListenerContainer.cs index 19b10e51..9566cdcc 100644 --- a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/AbstractMessageListenerContainer.cs +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/AbstractMessageListenerContainer.cs @@ -504,6 +504,10 @@ namespace Spring.Messaging.Nms.Listener // Transacted session created by this container -> rollback NmsUtils.RollbackIfNecessary(session); } + else if (IsClientAcknowledge(session)) + { + session.Recover(); + } } /// /// Perform a rollback, handling rollback excepitons properly. @@ -524,7 +528,12 @@ namespace Spring.Messaging.Nms.Listener } NmsUtils.RollbackIfNecessary(session); } - } catch (NMSException) + else if (IsClientAcknowledge(session)) + { + session.Recover(); + } + } + catch (NMSException) { logger.Error("Application exception overriden by rollback exception", ex); throw;