Since James and Hiram are back on the list ... I thought I'd repost this-

We are facing a problem of orphan connections to ActiveMQ. A simple .NET client that only creates a connection/session and then closes and exits, still shows up in jconsole.
It is possible to stop it manually in jconsole.

Below is an example to reproduce the problem:


The following code creates a connection to an OpenWire transport connector, waits for 1 second and then closes the session/connection. Looking at JConsole ... ActiveMQ reports the connection as open. Too many open connections and ActiveMQ stops processing messages.

However if the connection is not closed by the application and the application is killed using Ctrl-C ... then ActiveMQ closes the connections.

Is there something obvious that I'm doing wrong or is this a bug in the TcpTransport code?



using System;
using System.Threading;
using NMS;

namespace ActiveMQ {
  class TestMain {

      static void Main(string[] args) {

          Uri uri = new Uri("tcp://activemqserver:61616");

          ConnectionFactory factory = new ConnectionFactory(uri);
          IConnection connection = null;
          ISession session = null;

          try {
              connection = factory.CreateConnection();
              Console.WriteLine("Connection Created");

              connection.ClientId = "[test1] " + connection.ClientId;

              session = connection.CreateSession();
              Console.WriteLine("Session Created");

              Thread.Sleep(1000);

          } finally {
              session.Close();
              connection.Close();
              Console.WriteLine("Connection Closed");
          }
      }
  }
}

Reply via email to