我正在尝试在抛出异常时将消息放回MSMQ.以下代码似乎可以工作,但Message没有放回队列中?
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); } }
tomasr.. 5
几点:最好的方法是使用跨越两个队列的事务; 那样你就会知道你不会丢失信息.
第二部分是要小心如何创建队列以及如何将消息提交到第二个队列.特别是,MSMQ在发送消息时有时似乎"无声地失败"(尽管实际上错误消息记录在死信队列的其他地方),特别是如果发送的事务选项与目标的事务性质不匹配队列.
几点:最好的方法是使用跨越两个队列的事务; 那样你就会知道你不会丢失信息.
第二部分是要小心如何创建队列以及如何将消息提交到第二个队列.特别是,MSMQ在发送消息时有时似乎"无声地失败"(尽管实际上错误消息记录在死信队列的其他地方),特别是如果发送的事务选项与目标的事务性质不匹配队列.