在我上一篇文章《ASP.NET中進行消息處理(MSMQ)一》裡對MSMQ做了個通俗的介紹,最後以發送普通文本消息和復雜的對象消息為例介紹了消息隊列的使用。本文在此基礎上繼續介紹MSMQ的相關知識點,最後還是通過一個示例程序來分析MSMQ在實際項目開發中的應用。
建議:如果你對MSMQ不夠了解,在你閱讀本文前請先閱讀第一部分:《ASP.NET中進行消息處理(MSMQ)一》。
一、消息傳遞的優先級
在MSMQ中消息在隊列裡傳輸是分有優先級的,這裡我就以實例的形式介紹下關於優先級的使用,優先級一共有七種,MessagePriority枚舉裡全部進行了封裝。因這裡只作程序演示就不一一列舉出,僅用了Highest和Normal兩種類型,關於消息隊列上進行消息傳輸的七種優先級大家可以參考我下面提供的MessagePriority枚舉源代碼定義。
那麼在發送消息的時候怎麼指定消息的優先級呢?在Message對象裡封裝有一個屬性Priority,接受一個枚舉MessagePriority類型的值來設置消息傳輸的優先級。如下:
1System.Messaging.Message message = new System.Messaging.Message(); 2message.Priority = MessagePriority.Highest; //最高消息優先級
下面來看看一個在消息傳輸中使用優先級的示例程序,通過示例程序會學習得更明白。示例程序界面:
根據界面可知,提供了消息名字,消息優先級和消息內容三個輸入項,前面曾經說過,這裡為了方便演示就僅用了Highest和Normal兩種類型,當點擊發送消息的時候就通過是否選擇優先級來設置消息的優先級,代碼如下:
1private void btnSend_Click(object sender, EventArgs e) 2{ 3 //連接到本地的專用隊列myQueue 4 MessageQueue myQueue = new MessageQueue(".\\private$\\myQueue"); 5 System.Messaging.Message message = new System.Messaging.Message(); 6 message.Label = tbName.Text; 7 message.Body = tbContext.Text; 8 9 if (cbPriority.Checked) 10 { 11 message.Priority = MessagePriority.Highest; 12 } 13 else 14 { 15 message.Priority = MessagePriority.Normal; 16 } 17 myQueue.Send(message); 18 MessageBox.Show("成功發送消息到隊列"); 19}