很久沒有寫了,最近項目用到RabbitMQ,找了一些資料試驗,最後終於成功了,把安裝配置的步驟分享給你們。數據庫
1、Erlang
安裝具體過程:瀏覽器
1.雙擊otp_win32_R16801.exe(不一樣版本可能命名字不同),選擇next服務器
2.默認安裝在C盤,建議程序安裝在非系統盤好比D盤(若是安裝在C盤可能會出現一些權限問題),修改好安裝路徑後,選next:測試
3.進入安裝程序,選擇install,便可完成安裝。ui
配置環境變量:在系統變量下添加 變量名:ERLANG_HOME,變量值:C:\Program Files (x86)\erl6.1spa
2、安裝rabbitMQ
rabbitmq-server-3.3.5.exe
安裝完成增長環境變量,雙擊path,在其後面增長:;C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin3d
啓動startcode
cmd進到sbin目錄,輸入rabbitmq-service啓動server
或是直接找到rabbitMQ安裝目錄下C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin
對象
打開瀏覽器登陸http://localhost:15672進入監視頁面說明配置成功,用戶名和密碼:guest
配置成功之後就是發送消息,採用Exchange。
Rabbit的核心組件包含Queue(消息隊列)和Exchanges兩部分,Exchange的主要部分就是對信息進行路由,經過將消息隊列綁定到Exchange上,則能夠實現訂閱形式的消息發佈及Publish/Subscribe在這種模式下消息發佈者只須要將信息發佈到相應的Exchange中,而Exchange則自動將信息分發到不一樣的Queue當中。
在.Net環境下有基於RabbitMQ有不少有API的選擇,最後選擇了比較簡單的EasyNetQ(http://easynetq.com/)
/// <summary> /// 消息服務器鏈接器 /// </summary> public class BusBuilder { public static IBus CreateMessageBus() { //消息服務器鏈接字符串 string connString = "host=172.17.186.50:5672;virtualHost=rb;username=admin;password=123"; return RabbitHutch.CreateBus(connString); // return RabbitHutch.CreateBus(connectionString.ConnectionString); } }
/// <summary> /// 發送消息 /// </summary> public static void Publish(Message msg) { //// 建立消息bus IBus bus = BusBuilder.CreateMessageBus(); try { using (var publishChannel = bus.OpenPublishChannel()) //建立消息管道 { publishChannel.Publish(msg, x => x.WithTopic(msg.MessageRouter)); //經過管道發送消息 } } catch (EasyNetQException ex) { //處理鏈接消息服務器異常 // MessageHelper.WriteFuntionExceptionLog("Publish", ex.Message + " | " + ex.StackTrace); } bus.Dispose();//與數據庫connection相似,使用後記得銷燬bus對象 }
/// <summary> /// 接收消息 /// </summary> /// <param name="msg"></param> public static void Subscribe(Message msg, IProcessMessage ipro) { //// 建立消息bus IBus bus = BusBuilder.CreateMessageBus(); try { bus.Subscribe<Message>(msg.MessageID, message => ipro.ProcessMsg(message), x => x.WithTopic(msg.MessageRouter).WithArgument("x-ha-policy", "all")); } catch (EasyNetQException ex) { //處理鏈接消息服務器異常 // MessageHelper.WriteFuntionExceptionLog("Subscribe", ex.Message + " | " + ex.StackTrace); } }
添加虛擬主機
添加用戶
執行代碼就會自動創建Exchanges,名字是根據項目名來的
點擊新建的Exchanges進入新建queue
最後調用接口測試發送,代碼以下:
protected void Button1_Click(object sender, EventArgs e) { MQ.Message msg = new MQ.Message(); msg.MessageID = "testkey"; msg.MessageBody = "發送測試"; msg.MessageTitle = "hello world"; msg.MessageRouter = "testKey"; MQ.MQHelper.Publish(msg); }
msg.MessageRouter = "testKey"——這句配置很重要,取決於上一步的Routing Key.
推送消息成功!
源碼下載:http://pan.baidu.com/s/1sjExnWh