參考:https://my.oschina.net/loveorange/blog/3026473html
安裝參考連接:瀏覽器
1. 下載本身須要的rabbitmq_server(http://www.rabbitmq.com/download.html)版本和erlang環境(http://www.erlang.org/downloads)。spa
2. 先安裝erlang環境,並添加環境變量。.net
control panel --> (Viewed By Category)選擇System and Security -->選擇System 插件
環境變量添加可參考https://my.oschina.net/loveorange/blog/30264733d
3. 驗證erl是否安裝成功code
以管理員身份輸入cmd打開控制面板,輸入erl驗證是否安裝成功server
4. 安裝rabbitmqhtm
安裝完成後 cmd 命令到安裝目錄下的sbin 目錄 鍵入命令: rabbitmq-plugins.bat enable rabbitmq_management 開啓插件對象
鍵入: rabbitmq-server 啓動MQ
瀏覽器http://localhost:15672/ 訪問MQ的主頁 初始化密碼和用戶名都是: guest
5. rabbitmq在.NET中的簡單應用
1、 程序準備
(1)瀏覽器中打開QM主頁後,添加用戶。(若是沒有添加有權限的用戶,則沒法在程序中建立鏈接)
(2)初始添加用戶後,用戶沒有權限,顯示以下:
此時, 鼠標點擊用戶名test,點擊set permission 爲該用戶設置權限
2、 程序實現
生產者:
namespace Send { class Program { static void Main(string[] args) { Console.WriteLine("Start!"); IConnectionFactory conFactory = new ConnectionFactory//建立鏈接工廠對象 { HostName = "10.64.228.211", Port = 5672, UserName = "wl", Password = "123456" }; using (IConnection con = conFactory.CreateConnection())//建立鏈接 { using (IModel channel = con.CreateModel())//建立通道 { // 建立交換機 string queueName = "testQueue1"; string exchangeName = "exchangeTest1"; string routingKey = "routingKeyTest1"; channel.ExchangeDeclare(exchangeName, ExchangeType.Direct); //建立一個消息隊列並綁定到交換機上 channel.QueueDeclare(queueName, true, false, false, null); channel.QueueBind(queueName, exchangeName,routingKey,null); //Console.WriteLine("消息內容:"); string message = string.Empty; for (int i= 0; i< 10000; i++) { message = Thread.CurrentThread.ManagedThreadId + i.ToString(); byte[] body = Encoding.UTF8.GetBytes(message);//消息內容 //發送消息到消息隊列 channel.BasicPublish(exchangeName, routingKey, null, body); } // Console.Write("成功發送消息:" + message); } } } } }
啓動該服務,能夠在rabbitmq的主頁中看到接收的消息。
消費者
namespace Receive { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); IConnectionFactory conFactory = new ConnectionFactory//建立鏈接工廠對象 { HostName = "10.64.228.211", Port = 5672, UserName = "wl", Password = "123456" }; using (IConnection conn = conFactory.CreateConnection())//建立鏈接 { using (IModel channel = conn.CreateModel())//建立通道 { // 取出消息 string queueName = "testQueue1"; //建立消費者對象 var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { byte[] message = ea.Body;//接收到的消息 Encoding.UTF8.GetString(message); }; //消費者開啓監聽 var consumeResult = channel.BasicConsume(queueName, true,consumer); Console.ReadKey(); } } } } }
啓動消費服務,mq會消費隊列中消息。
顯示消息已經被消費。