From 21fe0a19193111d20f893268afdb601d90847c8b Mon Sep 17 00:00:00 2001 From: markpollack Date: Tue, 12 Aug 2008 02:55:54 +0000 Subject: [PATCH] Add reconnection logic to SimpleMessageListenerContainer. Test for SimpleMessageListenerContainer's ExceptionListener being invoked (SPRNET-542) --- .../Nms/Connections/CachingConnectionFactory.cs | 2 +- .../Nms/Connections/SingleConnectionFactory.cs | 15 +++++++-------- .../Messaging/Nms/Core/NmsTemplate.cs | 2 +- .../Listener/SimpleMessageListenerContainer.cs | 2 +- .../Connections/CachingConnectionFactoryTests.cs | 2 +- .../SimpleMessageListenerContainerTests.xml | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/CachingConnectionFactory.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/CachingConnectionFactory.cs index 3c42cfe6..6df52d50 100644 --- a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/CachingConnectionFactory.cs +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/CachingConnectionFactory.cs @@ -40,7 +40,7 @@ namespace Spring.Messaging.Nms.Connections /// SessionCacheSize property in case of a high-concurrency environment. /// /// Juergen Hoeller - /// Mark Pollack + /// Mark Pollack (.NET) public class CachingConnectionFactory : SingleConnectionFactory { #region Logging Definition diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/SingleConnectionFactory.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/SingleConnectionFactory.cs index 773357d0..130de362 100644 --- a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/SingleConnectionFactory.cs +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Connections/SingleConnectionFactory.cs @@ -275,15 +275,14 @@ namespace Spring.Messaging.Nms.Connections { con.ClientId = ClientId; } - if (ExceptionListener != null || ReconnectOnException) + if (reconnectOnException) { - IExceptionListener listenerToUse = ExceptionListener; - if (ReconnectOnException) - { - //add reconnect exception handler first. - con.ExceptionListener += new ExceptionListener(this.OnException); - } - con.ExceptionListener += new ExceptionListener(listenerToUse.OnException); + //add reconnect exception handler first to exception chain. + con.ExceptionListener += new ExceptionListener(this.OnException); + } + if (ExceptionListener != null) + { + con.ExceptionListener += new ExceptionListener(ExceptionListener.OnException); } } diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTemplate.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTemplate.cs index 87b4e3d3..458b0027 100644 --- a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTemplate.cs +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Core/NmsTemplate.cs @@ -898,7 +898,7 @@ namespace Spring.Messaging.Nms.Core { CheckMessageConverter(); Send(destinationName, new ConvertAndSendMessageCreator(this, message, postProcessor)); - + } /// Receive a message synchronously from the default destination, but only diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/SimpleMessageListenerContainer.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/SimpleMessageListenerContainer.cs index 9a368a32..3feb135d 100644 --- a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/SimpleMessageListenerContainer.cs +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Listener/SimpleMessageListenerContainer.cs @@ -192,7 +192,7 @@ namespace Spring.Messaging.Nms.Listener public void OnException(Exception exception) { // First invoke the user-specific ExceptionListener, if any. - //InvokeExceptionListener(exception); + InvokeExceptionListener(exception); // now try to recover the shared Connection and all consumers... if (logger.IsInfoEnabled) { diff --git a/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Connections/CachingConnectionFactoryTests.cs b/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Connections/CachingConnectionFactoryTests.cs index 56b87b1b..7a5c5da1 100644 --- a/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Connections/CachingConnectionFactoryTests.cs +++ b/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Connections/CachingConnectionFactoryTests.cs @@ -149,7 +149,7 @@ namespace Spring.Messaging.Nms.Connections IConnection connection = new TestConnection(); Expect.Call(connectionFactory.CreateConnection()).Return(connection).Repeat.Once(); - + mocks.ReplayAll(); diff --git a/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Integration/SimpleMessageListenerContainerTests.xml b/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Integration/SimpleMessageListenerContainerTests.xml index 8b0d49c3..cf8de992 100644 --- a/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Integration/SimpleMessageListenerContainerTests.xml +++ b/test/Spring/Spring.Messaging.Nms.Tests/Messaging/Nms/Integration/SimpleMessageListenerContainerTests.xml @@ -23,7 +23,7 @@ - +