[rabbitmq-discuss] helloworld java and .net
    David O'Brien 
    davidjohnobrien at gmail.com
       
    Mon Mar  7 22:47:28 GMT 2011
    
    
  
I am attempting to follow
http://www.rabbitmq.com/tutorial-one-java.html but using the .NET
client.
My sender appears to work fine:
private static String QUEUE_NAME = "hello";
        static void Main(string[] args)
        {
            ConnectionFactory factory = new ConnectionFactory();
            factory.HostName = "localhost";
            IConnection connection = factory.CreateConnection();
            IModel channel = connection.CreateModel();
            channel.QueueDeclare(QUEUE_NAME, false, false, false, null);
            string message = "Hello from .NET";
            channel.BasicPublish("", QUEUE_NAME, null,
Encoding.UTF8.GetBytes(message));
            Console.WriteLine(" [x] Sent '" + message + "'");
            channel.Close();
            connection.Close();
        }
My receiver works fine except after the first pass through the try
block it closes the SharedQueue resulting in an exception the next
time a message is received
private static String QUEUE_NAME = "hello";
        static void Main(string[] args)
        {
            ConnectionFactory factory = new ConnectionFactory();
            factory.HostName = "localhost";
            IConnection connection = factory.CreateConnection();
            connection.ConnectionShutdown += new
RabbitMQ.Client.Events.ConnectionShutdownEventHandler(connection_ConnectionShutdown);
            IModel channel = connection.CreateModel();
            channel.QueueDeclare(QUEUE_NAME, false, false, false, null);
            Console.WriteLine(" [*] Waiting for messages. To exit
press CTRL+C");
            QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
            channel.BasicConsume(QUEUE_NAME, true, consumer);
            while (true)
            {
                try
                {
                    BasicDeliverEventArgs e =
(BasicDeliverEventArgs)consumer.Queue.Dequeue();
                    IBasicProperties props = e.BasicProperties;
                    byte[] body = e.Body;
                    String message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Received '" + message + "'");
                    // ... process the message
                    channel.BasicAck(e.DeliveryTag, false);
                }
                catch (OperationInterruptedException ex)
                {
                    // The consumer was removed, either through
                    // channel or connection closure, or through the
                    // action of IModel.BasicCancel().
                    break;
                }
                //QueueingBasicConsumer.Delivery delivery =
consumer.nextDelivery();
                //String message = new String(delivery.getBody());
            }
How can set up the .NET client to operate as the Java one does ie it
continues to listen for new messages?
    
    
More information about the rabbitmq-discuss
mailing list