0
我創建了幾個測試應用程序來測試MSMQ。在做任何真正的工作之前,我想在幾個控制檯應用程序中使用MSMQ進行測試。當隊列中收到消息時,PeekCompleted未觸發
MSMQ以工作組模式安裝在本地服務器上。我的桌面服務器上也安裝了MSMQ。我正嘗試從遠程專用隊列發送和接收消息。
我可以發送消息給MSMQ就好了。我可以在隊列中看到他們。但是,當我嘗試將它們讀出來時,PeekCompleted事件不會觸發。我編寫了另一個調用Receive的同步版本的應用程序,我可以檢索這些消息。由於某些原因,BeginPeek和PeekCompleted不適合我。
對於工作組安裝,我不能使用BeginPeek嗎?如果我可以使用BeginPeek進行工作組安裝,是否有人知道有什麼問題?
class Program
{
static void Main(string[] args)
{
try
{
MessageQueue mq = new MessageQueue("FormatName:Direct=TCP:10.1.1.102\\private$\\EmailQueue");
mq.Formatter = new XmlMessageFormatter(new Type[] { typeof(Email) });
mq.PeekCompleted += new PeekCompletedEventHandler(ProcessMessage);
Console.WriteLine("Begin listening on queue...");
mq.BeginPeek();
return;
}catch(Exception e){
Console.WriteLine(e.ToString());
}
}
private static void ProcessMessage(Object source, PeekCompletedEventArgs asyncResult)
{
Console.WriteLine("Recieveing message...");
MessageQueue mq = (MessageQueue)source;
mq.EndPeek(asyncResult.AsyncResult);
Message m = mq.Receive();
Email e =(Email) m.Body;
Console.WriteLine("Email Message:");
Console.WriteLine(e);
mq.BeginPeek();
return;
}
}