0

在 MSMQ 中,第一条消息丢失,没有在队列中接收,但之后我们的系统处于正常状态,谁能解释一下。

简单代码

公共类 MSMQExample{

 private MessageQueue GetQueue(){

    MessageQueue _queue=new MessageQueue(@”.\Private$\Test");
    return _queue;
 }

 public void SendMessage(){
         MessageQueue queue=GetQueue();
         Message msg = new Message();
         msg.Body ="Test"
         queue.Send(msg);
}
//Call this method in Application_Start event in new Task.
public void StartQueue(){
    MessageQueue queue=GetQueue();
    Message msg=null;
    while(true){
       msg=queue.Receive();
       //Processing Code
    }
}

}

4

1 回答 1

0

为此,您必须将消息标记为Recoverable.
默认情况下,MSMQ消息仅保存在内存中,但Recoverable消息被备份到磁盘以启用可靠的MSMQ消息传递。

using System.Messaging;
Message recoverableMessage = new Message();
recoverableMessage.Body = "Sample Recoverable Message";
recoverableMessage.Recoverable = true;
MessageQueue msgQ = new MessageQueue(@".\$private\Orders");
msgQ.Send(recoverableMessage);  
于 2015-02-02T05:16:30.860 回答