在上一篇文章中,介绍了在window环境下安装erlang,rabbitmq-server,以免配置用户,权限,虚拟机等内容。
   
      今天将会介绍如果使用rabbitmq进行简单的消息入队,出队操作,因为本文演示的环境要用到上文中配置的环境,所以要运行本文sample,请先按上一篇中完成相应环境配置。
   
      首先,我们下载官方的.net客户端软件,链接:http://www.rabbitmq.com/dotnet.html
   
      下载并安装之后,将安装目录下的这两个DLL文件复制到我们示例项目中,并添加引用:

RabbitMQ.Client.dll //基于的发布订阅消息的功能类   
RabbitMQ.ServiceModel.dll //包括基于WCF方式发布订阅服务模型类

    
       如下图:
   NET下RabbitMQ实践[示例篇]
   
       接着,我们创建两个类,一个是ProducerMQ.cs(用于产生消息),一个是CustmerMq.cs(用于消费消息),代码如下:
  
       首先是ProducerMQ:

public class ProducerMQ
{
    
public static  void InitProducerMQ()
    {
        Uri uri 
= new Uri("amqp://10.0.4.85:5672/");
        
string exchange = "ex1";
        
string exchangeType = "direct";
        
string routingKey = "m1";
        
bool persistMode = true;
        ConnectionFactory cf 
= new ConnectionFactory();
      
        cf.UserName 
= "daizhj";
        cf.Password 
= "617595";
        cf.VirtualHost 
= "dnt_mq";
        cf.RequestedHeartbeat 
= 0;
        cf.Endpoint 
= new AmqpTcpEndpoint(uri);
        
using (IConnection conn = cf.CreateConnection())
        {
            
using (IModel ch = conn.CreateModel())
            {
                
if (exchangeType != null)
                {
                    ch.ExchangeDeclare(exchange, exchangeType);
//,true,true,false,false, true,null);
                    ch.QueueDeclare("q1"true);//true, true, true, false, false, null);
                    ch.QueueBind("q1""ex1""m1"falsenull); 
                }
                IMapMessageBuilder b 
= new MapMessageBuilder(ch);
                IDictionary target 
= b.Headers;
                target[
"header"= "hello world";
                IDictionary targetBody 
= b.Body;
                targetBody[
"body"= "daizhj";
                
if (persistMode)
                {
                    ((IBasicProperties)b.GetContentHeader()).DeliveryMode 
= 2;
                }
             
                ch.BasicPublish(exchange, routingKey,
                                           (IBasicProperties)b.GetContentHeader(),
                                           b.GetContentBody());

            }
        }
    }
}

相关文章: