快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19
ync.Book) }); 16 17    MessageQueueTransaction myTransaction = new MessageQueueTransaction(); 18    myTransaction.Begin(); 19    myQueue.Send(message, myTransaction); 20    myTransaction.Commit(); 21    Console.WriteLine("消息成功发送到队列!"); 22  } 23}

异步接收消息:

1/**//// <summary>
2/// 异步接收消息
3/// </summary>
4private static void AsyncReceiveMessage()
5{
6  MessageQueue myQueue = new MessageQueue(".\\private$\\myAsyncQueue");
7  if (myQueue.Transactional)
8  {
9    MessageQueueTransaction myTransaction = new MessageQueueTransaction();
10    //这里使用了委托,当接收消息完成的时候就执行MyReceiveCompleted方法
11    myQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(MyReceiveCompleted);
12    myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(MSMQ.Async.Book) });
13    myTransaction.Begin();
14    myQueue.BeginReceive();//启动一个没有超时时限的异步操作
15    signal.WaitOne();
16    myTransaction.Commit();
17  }
18}
  
1private static void MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
2{
3  try
4  {
5    MessageQueue myQueue = (MessageQueue)source;
6    //完成指定的异步接收操作
7    Message message = myQueue.EndReceive(asyncResult.AsyncResult);
8    signal.Set();
9    Book book = message.Body as Book;
10    Console.WriteLine("图书编号:{0}--图书名称:{1}--图书作者:{2}--图书定价:{3}",
11      book.BookId.ToString(),
12      book.BookName,
13      book.BookAuthor,
14      book.BookPrice.ToString());
15    myQueue.BeginReceive();
16  }
17  catch (MessageQueueException me)
18  {
19    Console.WriteLine("异步接收出错,原因:" + me.Message);
20
21  }
22}

四、MSMQ在邮件发送程序中的应用

在邮件程序的应用中,实现发送邮件的方法有很多种,很多朋友都比较喜欢邮件发送组件(如:JMail),在.NET Framework里也给我们提供了发送邮件的类StmpClient,位于System.Net下。我想很多朋友都曾用到过此类,如果说是在一个小型的邮件应用里,完全没有使用MSMQ的必要,因为数据量不大,直接处理就OK,这里我以邮件程序来说只是出于对MSMQ应用的介绍。说实在的,我也不知道怎么才能把这个东东给介绍清楚,先看看一张图吧!

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

现在的需求是这样的,有一个邮件发送客户端(SendMail.aspx,界面效果如上图所示)和一个邮件发送管理的服务端(MailServer.aspx),当在SendMail.aspx里发送邮件的时候,我们不直接将其发到目标地址去,而是将其发送到消息队列,然后由MailServer.aspx来负责从消息队列里读取出邮件信息在将其发送到目标地址。其实SendMail.aspx的职责就是完成把邮件信息发送到消息队列,示意性代码如下:

1protected void btnSendMail_Click(object sender, EventArgs e)
2{
3  //取出数据存入MailInfo对象
4  MailInfo info = new MailInfo();
5  info.Title = tbTitle.Text;
6  info.Content = tbContent.Text;
7  info.StmpServer = tbSmtpServer.Text;
8  info.Sender = tbSender.Text;
9  info.SenderPwd = tbSenderPwd.Text;
10  info.ReceiveAddress = tbReceive.Text;
11
12  if (info != null)
13  {
14

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号