Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecsharp
/*
*  Copyright (c) 2005-20102015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
*  WSO2 Inc. licenses this file to you under the Apache License,
*  Version 2.0 (the "License"); you may not use this file except
*  in compliance with the License.
*  You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RabbitMQ.Client;
  
namespace RabbitMQ
{
    class QueuePublisher
    {
        static void Main(string[] args)
        {
            QueuePublisher publisher=new QueuePublisher();
            publisher.PublishMessage("This is a Test Message" +i);
            Console.WriteLine("Sent Message Sent"+i);
            
            Console.ReadLine();
        }
 
  
        public void PublishMessage(string message)
        {
            //Setup the connection with the message broker
            ConnectionFactory factory = new ConnectionFactory();
            IProtocol protocol = Protocols.AMQP_0_89_QPID1;
            factory.VirtualHost = "/carbon";
            factory.UserName = "admin";
            factory.Password = "admin";
            factory.HostName = "localhost";
            factory.Port = 5672;
            factory.Protocol = protocol;
              using (IConnection conn = factory.CreateConnection())
            {
                using (IModel ch = conn.CreateModel())
                {
                    IBasicProperties basicProperties = ch.CreateBasicProperties();
                    //Setting JMS Message ID.
                    basicProperties.MessageId = "ID:" + System.Guid.NewGuid().ToString();
                    //Setting content-type for message as we are sending a text message.
                    basicProperties.ContentType = "text/plain";
                    //Declare the exchange for the publisher.Here the exchange type is direct.
                    ch.ExchangeDeclare("amq.direct", "direct");
                    //Publish the message
                    ch.BasicPublish("amq.direct", "test-queue", nullbasicProperties, Encoding.UTF8.GetBytes(message));
                                       
  }
             }
   
        }
   
    }
  
 }

Next, execute the following QueueConsumer .NET client, which allows you to receive messages from 'test-queue'.

Code Block
languagecsharp
/*
*  Copyright (c) 2005-20102015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
*  WSO2 Inc. licenses this file to you under the Apache License,
*  Version 2.0 (the "License"); you may not use this file except
*  in compliance with the License.
*  You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RabbitMQ.Client;
  
  
namespace QueueConsumer
{
    class QueueConsumer
    {
        static void Main(string[] args)
        {
            QueueConsumer qConsumer = new QueueConsumer();
            qConsumer.getMessageGetMessage();
        }
  
        public static void getMessageGetMessage()
        {
            //Setup the connection with the message broker
            ConnectionFactory factory = new ConnectionFactory();
            IProtocol protocol = Protocols.AMQP_0_89_QPID1;
            factory.VirtualHost = "/carbon";
            factory.UserName = "admin";
            factory.Password = "admin";
            factory.HostName = "localhost";
            factory.Port = 5672;
            factory.Protocol = protocol;
  
            using (IConnection conn = factory.CreateConnection())
            {
                using (IModel ch = conn.CreateModel())
                {
                    //Declare a queue to retrieve messages.
                    ch.QueueDeclare("test-queue", true, false, false, null);
                    //Create the binding between queue and the exchance
                    ch.QueueBind("test-queue", "amq.direct", "test-queue");
                    QueueingBasicConsumer consumer = new QueueingBasicConsumer(ch);
                    ch.BasicConsume("test-queue", false, consumer);
                    
                 

                     while (true)
                    {
                        try
                        {
                            RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();
                            byte[] body = e.Body;
                            string message = Encoding.UTF8.GetString(body);
                            Console.WriteLine("Received Message : " + message);
                            ch.BasicAck(e.DeliveryTag, false);
                        }
                        catch (OperationCanceledException e)
                        {
                            Console.WriteLine(e);
                            break;
                        }
                    }                  
                 }
            }
        }        
    }
}


The received messages are printed to the console.