併發隊列處理 之 MSMQ

消息隊列用於同步或者異步的高效處理消息隊列,它應用的場景包括:
1)關鍵性的財務數據處理:例如,電子商務。
2)嵌入式和手持程序;
3)戶外銷售:例如,自動化銷售程序;
4)工作流
消息隊列不適合客戶端和服務器端實時交互的場景,因爲隊列會出現一定的延遲現象。
MSMQ的實現包括一下幾個元素:消息隊列、發送器和接受器。消息隊列包括公用消息隊列、專用消息隊列,管理消息隊列等。消息隊列的發送首先要創建隊列,然後才能夠發送消息,實例代碼如下:
   static void SendMessage()
        {
            try
            {
                string path = @"FormatName:Direct=TCP:192.168.0.115\private$\killf";
                string localPath=@".\private$\killf";
                MessageQueue queue;
                if (MessageQueue.Exists(localPath))
                {
                    queue = new MessageQueue(path);
                }
                else
                {
                    queue = MessageQueue.Create(localPath);

                }
                queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
                queue.Send("hello world", "message");
                Console.WriteLine(queue.FormatName);
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
注意:MessageQueue.Exists 該方法只能夠處理本地的路徑,不能夠處理遠程路徑,參考鏈接:

接受消息時,首先獲取消息隊列,然後根據具體的隊列進行操作,操作實例如下:
        static void ReceiveMesage()
        {
            string path = "FormatName:Direct=TCP:192.168.0.115\\private$\\killf";
            MessageQueue queue = new MessageQueue(path);
            queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
            while (true)
            {
                Message message = queue.Receive();
                if (message != null)
                    Console.WriteLine(message.Body.ToString());
            }
          
            Console.ReadKey();
        }
    }

另外對於消息隊列的處理最好是啓動單獨的服務和線程,以進行大數據的併發處理。

發佈了43 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章