.NET6使用RabbitMQ

什么是RabbitMQ

      RabbitMQ(Rabbit Message Queue)是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整的可复用的企业级消息队,RabbitMQ可以实现点对点,发布订阅等消息处理模式。

环境和版本

    系统:Window10

    Erlang:24.2.1(下载地址:https://www.erlang.org/downloads)

    RabbitMQ:3.9.13(下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13.exe)

    项目框架:.NET 6

一、安装Erlang 

   1、 访问Erlang官网,因此示例使用的是Windows环境,所以下载Windows 64-bit版本

    

    2、双击安装Erlang

    3、选择安装路径,然后全部点击下一步等待安装完成即可。

    4、安装完后配置系统的环境变量(我的电脑->右键->属性->高级系统设置),环境变量配置完成后,需要重启电脑,然后windows+R,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。

        新建一个变量名:ERLANG_HOME;值为安装路径。点击确定

        在path最后加上:%ERLANG_HOME%\bin

二、安装RabbitMQ

    1、下载安装包,点击安装

 

 

    安装完成后在安装路径下面存在想要的文件夹。

 

    2、找到RabbitMQ安装文件夹下的的sbin目录,然后在目录上直接输入cmd然后回车

 

    3、输入rabbitmqctl status(此页面代表运行正常)

    4、启动服务端

    5、通过:http://localhost:15672进行访问,若15672端口号无法访问,可进入RabbitMQ安装文件夹下的的sbin目录,然后在目录上直接输入cmd,然后回车,输入命令rabbitmq-plugins enable rabbitmq_management命令进行处理。即可成功。

    15672:控制台端口号

    5672:应用访问端口号

    6、访问控制台(默认密码:guest/guest)

三、.Net6中使用RabbitMQ

1、新建一个控制台项目,安装nuget包

   

    2、事例代码

static void Main(string[] arg) {
            IConnectionFactory factory = new ConnectionFactory//创建连接工厂对象
            {
                HostName = "127.0.0.1",//IP地址
                Port = 5672,//端口号
                UserName = "guest",//用户账号
                Password = "guest"//用户密码
            };
            IConnection con = factory.CreateConnection();//创建连接对象
            IModel channel = con.CreateModel();//创建连接会话对象
            string name = "demo";
            //声明一个队列
            channel.QueueDeclare(
              queue: name,//消息队列名称
              durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
              exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
              autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
              arguments: null //设置队列的一些其它参数
               );
            //创建消费者对象
            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, ea) =>
            {
                byte[] message = ea.Body.ToArray();//接收到的消息
                Console.WriteLine("消费者接收到消息为:" + Encoding.UTF8.GetString(message));
            };
            //消费者开启监听
            channel.BasicConsume(name, true, consumer);
            //创建生产者对象
            string str = string.Empty;         
            do
            {
                Console.WriteLine("输入生产者发送内容:");
                str = Console.ReadLine();
                //消息内容
                byte[] body = Encoding.UTF8.GetBytes(str);
                //发送消息
                channel.BasicPublish("", name, null, body);
                Console.WriteLine("成功发送消息:" + str);
            } while (str.Trim().ToLower() != "exit");
            
            Console.ReadKey();
            channel.Dispose();
            con.Close();
            channel.Close();
        }

    执行成功后会在RabbitMQ的控制台管理工具中看到消息

     到此,Windows10搭建本地RabbitMq 服务端以及.Net6中的使用就算是成功了,由于时间关系,仅仅只测试了基本的消息类型,一对一的简单模式,其他的Work模式、发布订阅模式、路由模式、Topic模式及RPC模式后面在慢慢补充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章