//测试环境说明
//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远程读取消息的使用的默认帐户为
什么?