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