[rabbitmq-discuss] ShutdownListener not triggered on server shutdown
    Henric Larsson 
    henric.larsson at gmail.com
       
    Mon Nov  3 23:58:13 GMT 2008
    
    
  
Hi,
I'm using the rabbit java client and rabbitmq server for some simple
messaging and I can't seem to get the shutdown listener to work as expected.
Basically, I'm attaching a shutdownlistener to the connection and then start
sending messages every second. If I shutdown the server I would expect the
shutdownlistener to be invoked at some point on the client but this never
occurs. I only get an AlreadyClosedException when calling basicPublish on
the channel.
Test case:
package foobar;
import com.rabbitmq.client.*;
import java.io.IOException;
public class TestRabbitShutdownListener implements ShutdownListener,
Runnable
{
   private Connection connection;
   private Channel channel;
   private String exchange;
   private int ticket;
   public static void main(String[] args) throws IOException,
InterruptedException
   {
      ConnectionParameters cp = new ConnectionParameters();
      cp.setUsername("guest");
      cp.setPassword("guest");
      ConnectionFactory cf = new ConnectionFactory(cp);
      TestRabbitShutdownListener trsl = new TestRabbitShutdownListener(
              cf,
              "foobar"
      );
      Thread t = new Thread(trsl);
      t.start();
      t.join();
      Thread.sleep(5000);
   }
   public TestRabbitShutdownListener(ConnectionFactory connectionFactory,
                                     String exchange) throws IOException
   {
      this.exchange = exchange;
      this.connection = connectionFactory.newConnection("localhost");
      this.connection.addShutdownListener(this);
      setupChannel();
   }
   private void setupChannel() throws IOException
   {
      this.channel = connection.createChannel();
      this.ticket = channel.accessRequest("/data");
      channel.exchangeDeclare(
              ticket,
              exchange,
              "fanout"
      );
   }
   public void run()
   {
      while (true)
      {
         try
         {
            System.out.println("Sending msg..");
            channel.basicPublish(ticket, exchange, "",
MessageProperties.BASIC, new byte[]{});
            Thread.sleep(1000);
         }
         catch (IOException e)
         {
            e.printStackTrace();
            return;
         }
         catch (InterruptedException e)
         {
            System.out.println("thread interrupted");
            return;
         }
      }
   }
   public void shutdownCompleted(ShutdownSignalException e)
   {
      System.out.println("shutdownCompleted: " + e.getMessage());
      e.printStackTrace();
   }
}
-- 
.henric.larsson.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20081104/bd128294/attachment.htm 
    
    
More information about the rabbitmq-discuss
mailing list