MSMQ消息队列线程使用

  接手一新项目,写一个服务。一个线程间断调用webservice返回XML分解放入消息队列中,另一个线程抓消息队列中的消息生成Request调Webservice外发。其中对消息队列的安装不说。

ExpandedBlockStart.gif 代码
 1  // 跨线程的全局定义
 2  MessageQueue queue  =   new  MessageQueue( @" .\private$\hrsReservation " );
 3  queue.Formatter  =   new  XmlMessageFormatter();
 4 
 5  // 线程一里包括分解xml装入消息队列的操作
 6  Message msg  =   new  Message();
 7  msg.Formatter  =  queue.Formatter;
 8  msg.Label  =   " hrs " ;
 9  msg.Body  =  resProcess;
10  queue.Send(msg);
11 
12  // 线程二里包括取出消息操作
13  if ( ! MessageQueueProcess.IsQueueEmpty(queue))
14      {
15          Message recivedMsg  =  queue.Receive();
16      }
17  else
18      {
19          Thread.Sleep(ConfigerFile.RefreshTime)
20      }
21 
22  // 消息判空
23  class  MessageQueueProcess
24      {
25           public   static   bool  IsQueueEmpty(MessageQueue mq)
26          {
27               bool  IsQueueEmpty  =   false ;
28 
29               try
30              {
31                  mq.Peek( new  System.TimeSpan( 0 ));
32              }
33               catch  (MessageQueueException e)
34              {
35                   if  (e.MessageQueueErrorCode  ==  MessageQueueErrorCode.IOTimeout)
36                  {
37                      IsQueueEmpty  =   true ;
38                  }
39              }
40               return  IsQueueEmpty;
41          }
42      }

  似乎队列为空的情况下peek或者recieve方法会挂起,所以应该不需要判空sleep。而且调试中出现了挂起,不过不知道会不会引发其他的问题,因为对此不甚了解。所以就人为控制了。哪位老鸟精通此道,望不略赐教。

  

posted on 2010-01-20 15:26 生活就是点点滴滴 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/BuildLife/archive/2010/01/20/1652438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值