[英]Is it possible to prevent auto delete message after read in Msmq
IDE:VS 2010,Winforms:
我有一个简单的msmq发送/接收应用程序,我有一个要求,我将在其中读取消息,并根据该消息,如果该函数尚未就绪,则我将调用其他函数,然后我希望消息进入队列。
我的Msmq发送接收代码:
private void button1_Click(object sender, EventArgs e)
{
//MSMQ Send :
if (MessageQueue.Exists(@".\Private$\MyQ"))
{
myQ = new MessageQueue(@".\Private$\MyQ");
}
else
{
myQ = MessageQueue.Create(@".\Private$\MyQ");
}
string xmlText = getxmlString();
System.Messaging.Message msg = new System.Messaging.Message();
msg.Formatter = new XmlMessageFormatter();
msg.Body = xmlText;
msg.Label = "MyXmlMessage";
msg.Priority = MessagePriority.Normal;
myQ.Send(msg);
}
private void button2_Click(object sender, EventArgs e)
{
//MSMQ Receive
myQ = new MessageQueue(@".\Private$\MyQ");
System.Messaging.Message myMsg = myQ.Receive();
myMsg.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
bool IsValidated = Validate(myMsg.Body.ToString());
}
internal void Validate(string message)
{
//some logic
return false;
}
如您在接收代码中所看到的,我正在接收回消息并验证消息。在这里,我希望仅当IsValidated为true时才从队列中删除该消息,
基本上,我想防止自动删除消息将来变为false,并且要在队列中删除该消息(如果已验证)。
您能告诉我为实现该目标要进行哪些修改。
messageQueue.Formatter = new XmlMessageFormatter(
new Type[] { typeof(System.Xml.XmlElement) });
MessageEnumerator iter = messageQueue.GetMessageEnumerator2();
iter.Reset();
while (iter.MoveNext(new TimeSpan(1000)))
{
System.Messaging.Message msg = iter.Current;
msg.Formatter = new ActiveXMessageFormatter();
var reader = new StreamReader(msg.BodyStream);
var msgBody = reader.ReadToEnd();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.