您的位置:首页 > 编程语言 > ASP

ASP.NET中进行消息处理(MSMQ) 二

2008-06-28 05:54 429 查看
在我上一篇文章《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; //最高消息优先级

下面来看看一个在消息传输中使用优先级的示例程序,通过示例程序会学习得更明白。示例程序界面:

private void btnSend_Click(object sender, EventArgs e)

2private void DisplayMessage()

2 }
这里封装了一方法,专门负责从队列里读取全部消息并绑定在DataGridView控件上,这里我们只需要在按扭Click事件里调用这方法就OK。

1private void btnRec_Click(object sender, EventArgs e)

2// 摘要:

2// 指定消息队列在消息传递到队列的过程中应用于该消息的优先级,以及指定何时将消息插入目标队列。

3public enum MessagePriority

4//创建普通的专用消息队列

2MessageQueue myMessage = MessageQueue.Create(@".\private$\myQueue");

3//创建事务性的专用消息队列

4MessageQueue myTranMessage =MessageQueue.Create(@".\private$\myQueueTrans", true);

启动了事务,那么在发送和接收消息的时候肯定是与原来有一定的差别的,这里我就不做详细介绍,下面给出示意性代码,有兴趣的朋友可以直接下载本文示例程序代码了解更多。

普通的消息发送示意性代码:
1//连接到本地的队列

2MessageQueue myQueue = new MessageQueue(".\\private$\\myQueue");

3Message myMessage = new Message();

4myMessage.Body = "消息内容";

5//发送消息到队列中

7myQueue.Send(myMessage);
启动了事务后的消息发送示意性代码:
1//连接到本地的队列

2MessageQueue myQueue = new MessageQueue(".\\private$\\myQueueTrans");

3

4Message myMessage = new Message();

5myMessage.Body = "消息内容";

6

8MessageQueueTransaction myTransaction = new MessageQueueTransaction();

9//启动事务

10myTransaction.Begin();

11//发送消息到队列中

12myQueue.Send(myMessage, myTransaction); //加了事务

13//提交事务

14myTransaction.Commit();

15Console.WriteLine("消息发送成功!");

读取消息示意性代码:
1//连接到本地队列

2MessageQueue myQueue = new MessageQueue(".\\private$\\myQueueTrans");

3if (myQueue.Transactional)

5private static void SendMessage()

5private static void AsyncReceiveMessage()

5private static void MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)

2protected void btnSendMail_Click(object sender, EventArgs e)

2public class MailInfo

2private MailInfo ReceiveMessage()

5protected void Button2_Click(object sender, EventArgs e)

2{

3{

5{

19{

25 this.tdError.InnerText = "发送失败,失败原因:" + ex.Message;

26 }

27 }

28}

运行后的效果图如下:



本文中的所有示例程序全部通过调试,能力有限,文中所介绍的不是很清楚,详细可直接下载源代码了解。本代码包里也包含有第一篇文章里的全部示例程序代码。

点击连接下载示例程序代码:示例程序代码下载

相关文章连接:

ASP.NET中进行消息处理(MSMQ) 一

ASP.NET中进行消息处理(MSMQ) 三
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: