msmq消息队列使用及测试总结

//测试环境说明
//1,发送与接收应用程序客户端:window2003 server, window2000 server,window xp;
//2,msmq server :window2003 server +活动目录(已经为msmq消息队列的everynone帐户设置了所有权限)

//消息发送测试代码
try
   {
    System.Messaging.MessageQueue Queue;
    Queue = new System.Messaging.MessageQueue(@"FormatName:DIRECT=TCP:172.26.230.2\ptest1");
    
    System.Messaging.Message Msg;
    Msg = new System.Messaging.Message();
    Msg.Formatter =new System.Messaging.BinaryMessageFormatter();
    Msg.Body="Testing 3 times";
    Queue.Send(Msg);
   }
   catch(Exception ex)
   {
    System.Windows.Forms.MessageBox.Show(ex.ToString());
   }  

//消息接收测试代码
try
   {
    System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(@"FormatName:DIRECT=tcp:172.26.230.2\ptest1");

    // Set the queue'ss formatter to decode Point objects

    mq.Formatter = new System.Messaging.BinaryMessageFormatter();
    System.Messaging.Trustee trustee=new System.Messaging.Trustee();
    
    System.Messaging.Message msg = mq.Peek ( new TimeSpan(10000)) ;


    // Convert received message to object that we think was sent

    string pt = (string) msg.Body ;

    // Display it to the user
    
    MessageBox.Show (pt) ;
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.ToString());
   }


//运行结果说明
//1, 所有操作系统类型的客户端向远程msmq服务器发送消息成功
//2,window2000环境下从远程服务器接收消息成功
//   window xp客户端接收失败
//   window 2003(未安装活动目录)部分客户端接收成功,部分失败
//   window 2003(安装活动目录)所有客户端接收消息失败    
//3,异常讯息如下:
/*
---------------------------

System.Messaging.MessageQueueException

   at System.Messaging.MQCacheableInfo.get_ReadHandle()

   at System.Messaging.MessageQueue.StaleSafeReceiveMessage(UInt32 timeout, Int32 action, MQPROPS properties, NativeOverlapped* overlapped, ReceiveCallback receiveCallback, IntPtr cursorHandle, IntPtr transaction)

   at System.Messaging.MessageQueue.ReceiveCurrent(TimeSpan timeout, Int32 action, IntPtr cursor, MessagePropertyFilter filter, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)

   at System.Messaging.MessageQueue.Peek(TimeSpan timeout)

   at InternetQueueingRecipient.Form1.button2_Click(Object sender, EventArgs e) in c:\msmqandnet\msmqandnet\internetqueuing\internetqueueingrecipient\form1.cs:line 294
*/

疑问:msmq3.0远程接收消息时,客户端要做何种配置,服务器端要做何种配置?原因与原理?msmq远程读取消息的使用的默认帐户为
什么?

posted on 2005-12-23 17:43  billqi(岁月如水)  阅读(1424)  评论(0编辑  收藏  举报

导航