1.進入rabbitMQ官網下載下傳安裝包

2.點選安裝包安裝的時候會提示需要先裝erlang
點選是會自動跳轉到erlang的下載下傳界面如果沒有跳轉可以直接點選這裡下載下傳,根據系統選擇下載下傳包
下載下傳完之後輕按兩下exe安裝包進行安裝,一直下一步就行了(如果不想裝在c盤那就改一下盤符)
3.裝完了erlang,回去找到剛才第一步下載下傳的rabbitMQ的安裝包輕按兩下安裝,一樣的一直下一步就行了(中間遇到需要給它網絡點确定就可以了)
4.以上步驟完成了rabbitMQ服務的安裝,為了友善操作和管理下面我們安裝可視化管理界面
4.1打開cmd界面進入rabbitMQ的安裝目錄下的sbin目錄
4.2根據官網步驟執行指令rabbitmq-plugins enable rabbitmq_management
4.3安裝成功找到安裝目錄找到rabbitmq-server.bat輕按兩下運作(如果有錯就右鍵以管理者身份運作)出現如下界面
4.4打開浏覽器通路http://localhost:15672/
4.5預設使用者和密碼都是guest直接登入看下結果
代碼實作
1,建立demo生産者控制台項目
2,通過nuget安裝RabbitMQ.Client
代碼裡的使用者名和密碼不能用預設賬号不然會報錯,是以先去Admin界面添加一個使用者如使用者名wyb密碼123456
添加之後預設沒有連接配接權限需要去設定
3,在主函數Main裡面寫生産者代碼這裡先生産5條消息隻是簡單的demo(特别提醒代碼裡的端口号是5672不是進入管理位址的15672)
string hostName = "192.168.50.176";
int port = 5672;//預設端口5672;前端界面的端口是15672特别注意不要混淆
string userName = "wyb";
string password = "123456";
string virtualHost = "/";
//建立一個連接配接工廠
var factory = new ConnectionFactory();
factory.UserName = userName;
factory.Password = password;
factory.HostName = hostName;
factory.Port = port;
factory.VirtualHost = virtualHost;
//建立一個連接配接,此時可以在rabbitmq背景Web管理頁面中的Connections中看到一個連接配接生成
//一個連接配接可以建立多個通道
var connection = factory.CreateConnection();
string queueName = "q1";//隊列名稱
//建立一個通道
//此時可以在rabbitmq背景Web管理頁面中的Channels中看到一個新通道生成
var channel = connection.CreateModel();
//給通道綁定一個隊列,隊列如果不存在,則會建立新隊列,如果隊列已存在,那麼參數一定要正确,特别是arguments參數,否則會報錯
var arguments = new Dictionary<string, object>() { { "x-queue-type", "classic" } };
channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: arguments);
//釋出5條消息
for (var i = 0; i < 5; i++)
{
var buffer = Encoding.UTF8.GetBytes(i.ToString());
channel.BasicPublish("", queueName, null, buffer);
Console.WriteLine("釋出消息:"+i);
}
channel.Close();
Console.ReadKey();
View Code
4,f5運作項目看到如下結果就表示成功
5,同生産者項目一樣的步驟建立一下消費者控制台項目(一樣nuget安裝RabbitMQ.Client)
6,在消費者項目的main函數裡寫消費者的代碼
string hostName = "192.168.50.176";
int port = 5672;//預設端口5672;前端界面的端口是15672特别注意不要混淆
string userName = "wyb";
string password = "123456";
string virtualHost = "/";
//建立一個連接配接工廠
var factory = new ConnectionFactory();
factory.UserName = userName;
factory.Password = password;
factory.HostName = hostName;
factory.Port = port;
factory.VirtualHost = virtualHost;
//建立一個連接配接,此時可以在rabbitmq背景Web管理頁面中的Connections中看到一個連接配接生成
//一個連接配接可以建立多個通道
var connection = factory.CreateConnection();
string queue = "q1";//隊列名稱
//建立一個通道
//此時可以在rabbitmq背景Web管理頁面中的Channels中看到一個新通道生成
var channel = connection.CreateModel();
//給通道綁定一個隊列,隊列如果不存在,則會建立新隊列,如果隊列已存在,那麼參數一定要正确,特别是arguments參數,否則會報錯
var arguments = new Dictionary<string, object>() { { "x-queue-type", "classic" } };
channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: arguments);
//channel.BasicQos(2, 2, false);//設定QOS
//在通道中定義一個事件消費者
EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender, e) =>
{
var body = e.Body.Span;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine($"接收到消息:{message}");
Thread.Sleep(500);//暫停一下
//通知消息已被處理,如果沒有,那麼消息将會被重複消費
channel.BasicAck(e.DeliveryTag, false);
};
//ack設定成false,表示不自動送出,那麼就需要在消息被消費後,手動調用BasicAck去送出消息
channel.BasicConsume(queue, false, consumer);
Console.ReadKey();
7運作消費者項目結果如下
結束
簡單操作到此,後面再介紹實際應用
有夢想一定要去做
但是未必一定要實作