在ASP.NET中进行消息处理(MSMQ) 二2011-12-06 博客园 Bēniaǒ在我上一篇文章《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  //连接到本地的专用队列myQueue4  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;89  if (cbPriority.Checked)10  {11    message.Priority = MessagePriority.Highest;12  }13  else14  {15    message.Priority = MessagePriority.Normal;16  }17  myQueue.Send(message);18  MessageBox.Show("成功发送消息到队列");19}