.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模式後面在慢慢補充。

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