Я создал пару тестовых приложений для тестирования 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;
}
}