在ASP.NET中进行消息处理(MSMQ) 二
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应用的介绍。说实在的,我也不知道怎么才能把这个东东给介绍清楚,先看看一张图吧! 现在的需求是这样的,有一个邮件发送客户端(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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |