初識Message Queue之--基礎篇


      之前我在項目中要用到消息隊列相關的技術時,一直讓Redis兼職消息隊列功能,一個偶然的機會接觸到了MSMQ消息隊列。秉着技術還是專業的好為原則,對MSMQ進行了學習,以下是我個人的學習筆記。

一、什么是MSMQ

在我理解中,消息隊列就是一個數據的容器,並且可以異步處理數據,提高數據的並發性。比如投遞簡歷:用人單位就像是消息隊列,在同一時間,可以接受大量的簡歷(數據)。然后等回公司了再一份一份的取出查看。

二、MSMQ功能啟動(win 7為例)

      好多系統默認是不開啟消息隊列(MSMQ)的。故,我們要手動開啟。具體流程為:打開控制面板-》程序和功能-》打開或關閉Windows功能(時間比較長)-》勾選Microsoft Message Queue(MSMQ)服務器;即可。如圖所示:

1、

 

2、

3、

完成以上操作,MSMQ便正常啟動了;

 三、創建一個消息隊列(暫做了解,代碼也可以創建,感覺代碼更方便直觀)

     我們通過打開計算機管理,就可以看到消息隊列的內容了。(計算機管理打開方式:控制面板-》管理工具-》計算機管理)如圖:

      我們可以看出,系統給我們提供了四種隊列,但是我們用戶只能使用專用隊列這一項。隊列地址以private$\開頭。

      我們可以嘗試創建一個專用隊列,"右擊"專用隊列,再點擊"新建",得到新增界面如下圖。

      對話框里面有一個事務性,說明MSMQ是支持事物提交,由於目前沒有涉及到事物性,因此暫不講解。

      我們起一個名為test的消息隊列點擊確定,我們便可以看到在右側出現了一個名為test的隊列。

四、怎么樣在.NET中使用MSMQ

      對於.NET來說,微軟封裝了操作MSMQ的類,MessageQueue ;該類需要引入命名空間System.Messaging;

      以下分模塊介紹MessageQueue 中的主要方法:

 

1、創建MSMQ隊列(Create)

            string path =".\\private$\\"+ "test";//設置消息隊列路徑
            if (!MessageQueue.Exists(path))//判斷該路徑是否存在
            {
                MessageQueue.Create(path);//如果不存在則創建
            }
            MessageBox.Show("ok");

 

 2、發送數據(Send)

          string path = ".\\private$\\" + "test";//設置消息隊列路徑
          MessageQueue msqs = new MessageQueue(path);//創建指定路徑下的消息隊列對象
          Message ms = new Message();//創建消息對象
          ms .Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });//設置消息的Formatter數據類型
          msqs.Send(ms);
          MessageBox.Show("成功");

注:在發送時,盡量使用消息隊列對象指定一個Formatter類型(用Formatter屬性)。在接收和發送均用相同類型。否則有可能程序在Receive時就拋異常。

 

3、接收數據(Receive)

            string path = ".\\private$\\" + "test";//設置消息隊列路徑
            MessageQueue msqs = new MessageQueue(path);//創建指定路徑下的消息隊列對象
            System.Messaging.Message mes =  msqs.Receive();//獲取單條數據(如果沒有數據,當前進程會被阻塞)
            string message = mes.Body.ToString();//獲取Message內的內容
            MessageBox.Show(message);

注:Receive方法在沒有數據接收時,會阻塞線程。因此,建議放在單獨的線程中運行,以保證程序的穩定運行;

      Message是MSMQ的一個數據容器,其中數據存儲在Body中。Body是一個已經被序列化的數據。故,在使用時要轉換為相應的類型。

      以上是基礎的MSMQ的使用方式,掌握上述技術,可以使用MSMQ進行簡單的數據存儲。之后有更高級的用法我再補充。謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM