当抛出异常时,我尝试将消息放回MSMQ中。下面的代码似乎可以工作,但是消息没有放回队列中?
Message msg = null;
try
{
MessageQueue MQueue = new MessageQueue(txtMsgQPath.Text);
msg = MQueue.ReceiveById(txtQItemToRead.Text);
lblMsgRead.Text = msg.Body.ToString(); // This line throws exception
}
catch (Exception ex)
{
lblMsgRead.Text = ex.Message;
if (msg != null)
{
MessageQueue MQ = new MessageQueue(txtMsgQPath.Text);
MQ.Send(msg);
}
}发布于 2008-11-11 19:41:16
几个要点:最好的方法是使用跨越两个队列的事务;这样您就知道不会丢失消息。
它的第二部分是要注意队列是如何创建的,以及如何向第二个队列提交消息。具体地说,MSMQ有时在发送消息时显示为“静默失败”(尽管实际上错误消息记录在死信队列中的其他位置),特别是在发送的事务选项与目标队列的事务性质不匹配的情况下。
发布于 2008-11-10 22:09:27
您真的打算将该消息发送回发起人吗?把它发回给你自己是非常危险的,你只会一次又一次地轰炸。
发布于 2008-11-10 22:04:30
我相信你是想“偷看”这条信息。使用: MessageQueue.Peek,如果成功,则使用该消息。
https://stackoverflow.com/questions/279313
复制相似问题