MSMQ消息队列线程使用
接手一新项目,写一个服务。一个线程间断调用webservice返回XML分解放入消息队列中,另一个线程抓消息队列中的消息生成Request调Webservice外发。其中对消息队列的安装不说。
代码 1//跨线程的全局定义
2MessageQueuequeue=newMessageQueue(@".\private$\hrsReservation");
3queue.Formatter=newXmlMessageFormatter();
4
5//线程一里包括分解xml装入消息队列的操作
6Messagemsg=newMessage();
7msg.Formatter=queue.Formatter;
8msg.Label="hrs";
9msg.Body=resProcess;
10queue.Send(msg);
11
12//线程二里包括取出消息操作
13if(!MessageQueueProcess.IsQueueEmpty(queue))
14{
15MessagerecivedMsg=queue.Receive();
16}
17else
18{
19Thread.Sleep(ConfigerFile.RefreshTime)
20}
21
22//消息判空
23classMessageQueueProcess
24{
25publicstaticboolIsQueueEmpty(MessageQueuemq)
26{
27boolIsQueueEmpty=false;
28
29try
30{
31mq.Peek(newSystem.TimeSpan(0));
32}
33catch(MessageQueueExceptione)
34{
35if(e.MessageQueueErrorCode==MessageQueueErrorCode.IOTimeout)
36{
37IsQueueEmpty=true;
38}
39}
40returnIsQueueEmpty;
41}
42}
似乎队列为空的情况下peek或者recieve方法会挂起,所以应该不需要判空sleep。而且调试中出现了挂起,不过不知道会不会引发其他的问题,因为对此不甚了解。所以就人为控制了。哪位老鸟精通此道,望不略赐教。
posted on -01-20 15:26 生活就是点点滴滴 阅读(...) 评论(...) 编辑 收藏