You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Jim Gomes (Resolved) (JIRA)" <ji...@apache.org> on 2012/02/29 22:59:57 UTC
[jira] [Resolved] (AMQNET-355) Run as windows service: Need
reconnect to establish the connection to the ActiveMQ Server
[ https://issues.apache.org/jira/browse/AMQNET-355?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jim Gomes resolved AMQNET-355.
------------------------------
Resolution: Not A Problem
Use of the failover protocol seem to have addressed this issue.
> Run as windows service: Need reconnect to establish the connection to the ActiveMQ Server
> -----------------------------------------------------------------------------------------
>
> Key: AMQNET-355
> URL: https://issues.apache.org/jira/browse/AMQNET-355
> Project: ActiveMQ .Net
> Issue Type: Task
> Components: ActiveMQ, NMS
> Affects Versions: 1.5.1, 1.5.2
> Environment: Windows7 32Bit pro SP1 / Windows XP pro SP3 / Windows 2003 R2 32Bit Standard SP2
> ActiveMQ Version: 5.5.0
> Reporter: Marc Giavarra
> Assignee: Jim Gomes
> Priority: Minor
>
> I am using the latest version of NMS to connect to an ActiveMQ Server (version 5.5.0).
> If you use this snippet in a windows service, you get an EndOfStreamException/ConnectionClosedException at the first call of "this.connection.Start();". If you call "CreateConnection" and "Start" once again, everything works fine.
> In a normal windows application you do not need to recall.
> Code:
> protected override void OnStart(string[] args)
> {
> // Install service
> // c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\Sandbox\CS_2011.483\Unproduktiv\WebSocketTestService\bin\Debug\WWWebSocketService.exe
> try
> {
> Apache.NMS.IConnectionFactory connectionFactory = new Apache.NMS.ActiveMQ.ConnectionFactory("ssl://xxxxx");
> System.Diagnostics.Trace.WriteLine("Create connection");
> this.connection = connectionFactory.CreateConnection("MessageBrokerUsername", "MessageBrokerPassword");
> this.connection.ExceptionListener += new Apache.NMS.ExceptionListener(connection_ExceptionListener);
> System.Diagnostics.Trace.WriteLine("Start connection.");
> bool connected = false;
> int connectionCounter = 0;
> while (!connected)
> {
> try
> {
> connectionCounter++;
> this.connection.Start();
> connected = this.connection.IsStarted;
> }
> catch (System.Exception ex)
> {
> this.connection.Dispose();
> System.Diagnostics.Trace.WriteLine(ex.ToString());
> System.Diagnostics.Trace.WriteLine("Tries to connect: " + connectionCounter.ToString());
> System.Threading.Thread.Sleep(3000);
> // do reconnect
> this.connection = connectionFactory.CreateConnection("MessageBrokerUsername", "MessageBrokerPassword");
> }
> }
> System.Diagnostics.Trace.WriteLine("Tries to connect: " + connectionCounter.ToString());
> this.session = connection.CreateSession();
> System.Diagnostics.Trace.WriteLine("Create queue.");
> Apache.NMS.IDestination destination = new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("test");
> System.Diagnostics.Trace.WriteLine("Create consumer.");
> this.consumer = session.CreateConsumer(destination);
> this.consumer.Listener += new Apache.NMS.MessageListener(consumer_Listener);
> }
> catch (System.Exception ex)
> {
> System.Diagnostics.Trace.WriteLine(ex.ToString());
> }
> }
> OS: Windows XP pro SP3 // Windows 2003 R2 32Bit Standard SP2
> User: Local System // administrator
> Debug output
> [3996] Create connection
> [3996] Start connection.
> [3996] Apache.NMS.ActiveMQ.ConnectionClosedException: The connection is already closed!
> [3996] at Apache.NMS.ActiveMQ.Connection.CheckConnected() in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:line 821
> [3996] at Apache.NMS.ActiveMQ.Connection.Start() in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:line 419
> [3996] at WebSocketTestService.WebSocketService.OnStart(String[] args) in C:\Sandbox\CS_2011.483\Unproduktiv\WebSocketTestService\WebSocketService.cs:line 44
> [3996] Tries to connect: 1
> [3996] Apache.NMS.NMSException: Unable to read beyond the end of the stream. ---> System.IO.EndOfStreamException: Unable to read beyond the end of the stream.
> [3996] at System.IO.__Error.EndOfFile()
> [3996] at System.IO.BinaryReader.FillBuffer(Int32 numBytes)
> [3996] at System.IO.BinaryReader.ReadInt32()
> [3996] at Apache.NMS.Util.EndianBinaryReader.ReadInt32() in c:\Sandbox\activemq-dotnet\Apache.NMS\trunk\src\main\csharp\Util\EndianBinaryReader.cs:line 135
> [3996] at Apache.NMS.ActiveMQ.OpenWire.OpenWireFormat.Unmarshal(BinaryReader dis) in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\OpenWire\OpenWireFormat.cs:line 226
> [3996] at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.ReadLoop() in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Transport\Tcp\TcpTransport.cs:line 281
> [3996] --- End of inner exception stack trace ---
> [3996] Tries to connect: 2
> [3996] Create queue.
> [3996] Create consumer.
> OS: Windows7 32Bit pro SP1
> User: Local System
> Debug output
> [7300] Create connection
> [7300] Start connection.
> [7300] Tries to connect: 1
> [7300] Create queue.
> [7300] Create consumer.
> User: administrator
> Debug output
> [4128] Create connection
> [4128] Start connection.
> [4128] Apache.NMS.NMSException: Über das Ende des Streams hinaus kann nicht gelesen werden. ---> System.IO.EndOfStreamException: Über das Ende des Streams hinaus kann nicht gelesen werden.
> [4128] bei System.IO.__Error.EndOfFile()
> [4128] bei System.IO.BinaryReader.FillBuffer(Int32 numBytes)
> [4128] bei System.IO.BinaryReader.ReadInt32()
> [4128] bei Apache.NMS.Util.EndianBinaryReader.ReadInt32() in c:\Sandbox\activemq-dotnet\Apache.NMS\trunk\src\main\csharp\Util\EndianBinaryReader.cs:Zeile 135.
> [4128] bei Apache.NMS.ActiveMQ.OpenWire.OpenWireFormat.Unmarshal(BinaryReader dis) in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\OpenWire\OpenWireFormat.cs:Zeile 226.
> [4128] bei Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.ReadLoop() in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Transport\Tcp\TcpTransport.cs:Zeile 281.
> [4128] --- Ende der internen Ausnahmestapelüberwachung ---
> [4128] Apache.NMS.ActiveMQ.ConnectionClosedException: The connection is already closed!
> [4128] bei Apache.NMS.ActiveMQ.Connection.CheckConnected() in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:Zeile 821.
> [4128] bei Apache.NMS.ActiveMQ.Connection.Start() in c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:Zeile 419.
> [4128] bei WebSocketTestService.WebSocketService.OnStart(String[] args) in C:\Sandbox\CS_2011.483\Unproduktiv\WebSocketTestService\WebSocketService.cs:Zeile 44.
> [4128] Tries to connect: 1
> [4128] Tries to connect: 2
> [4128] Create queue.
> [4128] Create consumer.
> OS: An other Windows7 32Bit pro SP1
> the opposite: administrator is ok; Local System throws the exception
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira