天天看點

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

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

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 2.點選安裝包安裝的時候會提示需要先裝erlang

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 點選是會自動跳轉到erlang的下載下傳界面如果沒有跳轉可以直接點選這裡下載下傳,根據系統選擇下載下傳包

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 下載下傳完之後輕按兩下exe安裝包進行安裝,一直下一步就行了(如果不想裝在c盤那就改一下盤符)

3.裝完了erlang,回去找到剛才第一步下載下傳的rabbitMQ的安裝包輕按兩下安裝,一樣的一直下一步就行了(中間遇到需要給它網絡點确定就可以了)

4.以上步驟完成了rabbitMQ服務的安裝,為了友善操作和管理下面我們安裝可視化管理界面

 4.1打開cmd界面進入rabbitMQ的安裝目錄下的sbin目錄

  

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 4.2根據官網步驟執行指令rabbitmq-plugins enable rabbitmq_management

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 4.3安裝成功找到安裝目錄找到rabbitmq-server.bat輕按兩下運作(如果有錯就右鍵以管理者身份運作)出現如下界面

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 4.4打開浏覽器通路http://localhost:15672/

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

4.5預設使用者和密碼都是guest直接登入看下結果

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

代碼實作

1,建立demo生産者控制台項目

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 2,通過nuget安裝RabbitMQ.Client

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 代碼裡的使用者名和密碼不能用預設賬号不然會報錯,是以先去Admin界面添加一個使用者如使用者名wyb密碼123456

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

 添加之後預設沒有連接配接權限需要去設定

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

3,在主函數Main裡面寫生産者代碼這裡先生産5條消息隻是簡單的demo(特别提醒代碼裡的端口号是5672不是進入管理位址的15672)

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
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運作項目看到如下結果就表示成功

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

5,同生産者項目一樣的步驟建立一下消費者控制台項目(一樣nuget安裝RabbitMQ.Client)

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

6,在消費者項目的main函數裡寫消費者的代碼

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
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運作消費者項目結果如下

netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳
netcore使用RabbitMQ入門--win10開發環境(實踐篇無理論) 下載下傳

結束

簡單操作到此,後面再介紹實際應用

有夢想一定要去做

但是未必一定要實作