[rabbitmq-discuss] subscriber failed to detect closed connection

Mark Ward ward.mark at gmail.com
Thu Aug 2 15:58:51 BST 2012


Hi,

I am performing tests to a server across the internet.  During the night 
our firewall is rebooted and it appears the basic consumer is not detecting 
this and does not throw any exceptions on the connection.  When I arrive to 
the office each morning the subscriber client is still running and in the 
block state waiting for a message.  If I send messages to the server the 
client will not receive messages unless I restart the client.  The client 
works all day long as I push millions of messages through for testing.  It 
is after the firewall reset that the client does not continue to work or 
fail out.  This does appear to be a repeatable issue for the past two days 
it has performed this same issue.  I am going to continue tonight to see if 
it repeats.

Is there something I need to enable to have the client detect the 
connection closure?  The testing I have manually performed on closing the 
network connection, shutting down the server, restarting the server have 
all caused the client to properly throw and exception that the connection 
was closed.  It is only when the firewall resets that the client does not 
detect the failed connection. 

This is the .NET client connecting to the port 5672.  It is not using SSL.

below is the example code I am working with.

var connectionFactory = new ConnectionFactory();
            connectionFactory.HostName = hostName;
            connectionFactory.Port = port;

            IConnection connection = connectionFactory.CreateConnection();
            IModel channel = connection.CreateModel();

            QueueingBasicConsumer consumer = new 
QueueingBasicConsumer(channel);
            String consumer_tag = channel.BasicConsume("QueueOne", false, 
consumer);

            Console.WriteLine("ctrl+c to exit");
            while (true)
            {
                BasicDeliverEventArgs evt_args = 
(BasicDeliverEventArgs)consumer.Queue.Dequeue();
                IBasicProperties msg_props = evt_args.BasicProperties;
                string message = Encoding.UTF8.GetString(evt_args.Body);

                channel.BasicAck(evt_args.DeliveryTag, false);

                Console.WriteLine("Message Body: " + message);
            }

            channel.Close();
            connection.Close();
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120802/63cb4afa/attachment.htm>


More information about the rabbitmq-discuss mailing list