企業應用系統,如果系統之間的通信、集成與整合,尤其當面臨異構系統時,那麼需要分散式的調用與通信。系統中一般會有很多對實時性要求不高但零零碎碎且耗時的地方,比如發送簡訊,郵件提醒,記錄用戶操作日誌等,在用戶訪問量比較大的情況下,對系統壓力比較大。 面對這些問題,我們一般會將這些請求,放在消息隊列MQ中 ...
企業應用系統,如果系統之間的通信、集成與整合,尤其當面臨異構系統時,那麼需要分散式的調用與通信。系統中一般會有很多對實時性要求不高但零零碎碎且耗時的地方,比如發送簡訊,郵件提醒,記錄用戶操作日誌等,在用戶訪問量比較大的情況下,對系統壓力比較大。
面對這些問題,我們一般會將這些請求,放在消息隊列MQ中處理;異構系統之間使用消息進行通訊。
MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程式對應用程式的通信方法。應用程式通過讀寫出入隊列的消息(針對應用程式的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程式之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程式通過 隊列來通信。隊列的使用除去了接收和發送應用程式同時執行的要求。
http://www.rabbitmq.com/download.html下安裝服務端,由於RabbitMQ使用Erlang語言編寫,所以先安裝Erlang語言運行環境http://www.erlang.org/,按照網上的操作要求安裝和配置環境變數,命令行執行指令瀏覽器如下管理界面:
因為我要用C#語言做個簡單的驗證,所以需要API支持,如下地址下載https://www.rabbitmq.com/releases/rabbitmq-dotnet-client/,版本很多,酌情下載
引用RabbitMQ.Client.dll:
1 static void Main(string[] args) 2 { 3 var factory = new ConnectionFactory(); 4 factory.HostName = "localhost";//RabbitMQ服務在本地運行 5 factory.UserName = "guest";//用戶名 6 factory.Password = "guest";//密碼 7 8 using (var connection = factory.CreateConnection()) 9 { 10 using (var channel = connection.CreateModel()) 11 { 12 channel.QueueDeclare("hello", false, false, false, null);//創建一個名稱為hello的消息隊列 13 string message = "Hello World"; //傳遞的消息內容 14 var body = Encoding.UTF8.GetBytes(message); 15 channel.BasicPublish("", "hello", null, body); //開始傳遞 16 Console.WriteLine("已發送: {0}", message); Console.ReadLine(); 17 } 18 } 19 }
一個簡單的測試就好了,註意在使用RabitMQ之前,先對幾個概念和知識點:生產、隊列、消費、工作隊列、輪訓分發、消息響應、消息持久化、公平分發,網路有相關知識,就不詳細解化了...
打開cmd切換到sbin目錄下執行rabbitmqctl status\rabbitmq-service start\rabbitmqctl list_users等簡單指令
好了,開始玩耍吧!