0
我有一个MSMQ队列由五个窗口服务监听。我为此使用了BeginPeek和PeekCompleted事件。我的问题在五个服务中,只有一个服务是该消息的正确接收者。所有四个只读消息,但没有执行任何操作。这只能在我们读取MQ消息时识别。 现在,我在我的服务中添加了一个代码来检查,如果条件匹配并且消息正在由正确的服务处理,那么我正在使用Receive来将邮件从MSMQ中退出。这是一个好主意吗?其次,如果消息不满足条件,并且所有五个服务只是窥视它,但没有收到,消息仍然在队列中。我明白。但同一条消息正在无限次处理,因为消息从未被删除。相同的消息到几个服务
private void queue_PeekCompleted(object sender, PeekCompletedEventArgs e)
{
MessageQueue queue = (MessageQueue)sender;
//Message msg = queue.EndPeek(e.AsyncResult);
Message msg = e.Message;
//Read message and check if the criteria matches
if(CriteriaMatches)
{
queue.ReceiveById(e.Message.Id);
}
queue.EndPeek(e.AsyncResult);
queue.BeginPeek();
}
感谢您的帮助。 谢谢, Fayaz
但是,这将阻止队列中的所有消息。 – Fayaz
如何?该消息将不再位于主队列中。 –