.Net环境下RabbitMQ的安装及使用

本文介绍如何在Windows环境下安装RabbitMQ,并通过C#实现消息的生产和消费。文章强调了管理员权限的重要性,并提供了生产者和消费者的代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ安装(winows版RabbitMQ)

安装借鉴这篇前半部分:http://blog.youkuaiyun.com/xingxing513234072/article/details/51014695

使用及理论借鉴这个地址后半部分 http://www.cnblogs.com/yangecnu/p/4227535.html


安装什么的我不多说,注意:

一:以管理员权限(右击以管理员权限运行)安装Erlang,否则RabbitMQ安装好启动的时候报错,

二:以管理员权限启动CMD,执行启动RabbitMQ命令


安装完我们得知道要怎么操作RabbitMQ、怎么部署?网上理论、demo一大推,没有人指导的话,你都不知道究竟怎么用代码控制消息生产、消费。说的通俗点:怎么把消息给MQ,MQ怎么处理这些信息。


怎么部署生产者:即怎么把消息传递给MQ、让Ta把消息放进队列。网上的demo代码是在控制台Main函数里,这就给了我误区。真相是,无需部署,只需要把生产者写成方法集成到自己的系统中,根据业务需要将消息放进队列。


怎么部署消费者:至少需要运行一个控制台程序来读取MQ队列。


C#操作RabbitMQ,需要一个RabbitMQd程序集,很方便的从Nuget中获取安装。



代码如下:

  
  //queueName 队列名称
  public void SendMsg(string queueName)
  {
        var conFact = new ConnectionFactory();
        conFact.HostName = "122.114.53.6";
        conFact.UserName = "jz-mq";
        conFact.Password = "jz-mq";
        conFact.Port = 5672;//默认端口
      
        using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    bool durable = true;//设置队列是否持久化
                    //声明一个队列 排他性,与自动删除(如果名称相同不会重复创建)
                    channel.QueueDeclare(queueName, durable, false, false, null);

                    var properties = channel.CreateBasicProperties();
                    properties.DeliveryMode = 2;

                    string message = GetMessage(args);
                    var body = Encoding.UTF8.GetBytes(message);

                    channel.BasicPublish("", queueName, properties, body);

                    Console.WriteLine("发送了信息{0}", message);
                }
            }
  }
  
  
  public static void Main(string[] args)
        {
            var queueName = "logs";
            var factory = GetFactory();

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    bool durable = true;//设置队列是否持久化
                    //声明一个队列 设置排他性,与自动删除(如果名称相同不会重复创建)
                    channel.QueueDeclare(queueName, durable, false, false, null);
                    channel.BasicQos(0, 1, false);

                    var consumer = new EventingBasicConsumer(channel);
                    channel.BasicConsume(queueName, true, consumer);

                    Console.WriteLine("消费者已启动,等待队列Logs任务..");


                    consumer.Received += (send, e) =>
                    {
                        string msg = Encoding.UTF8.GetString(e.Body);

                        Console.WriteLine("获取到信息{0}", msg);
                    };


                    //告诉RabbitMQ已经收到并处理了某条消息
                    channel.BasicConsume(queueName, true, consumer);
                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
            }
        }


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值