2011-03-09 14 views
2

我正在編寫一個控制檯應用程序,它將消息添加到本地隊列。但是,沒有消息正在被插入。msmq中沒有留言

我創建隊列爲事務性和插入類似以下內容:

 string path = @"FormatName:DIRECT=OS:computername\private$\myqueue"; 
     MessageQueue queue = new MessageQueue(); 
     queue.Path = path;    

     foreach (string msg in messages) 
     { 
      queue.Send("inputMessage", msg); 

     } 

什麼問題呢?

謝謝。

回答

7

容易,這一點。 您正在向事務性隊列發送非事務性消息。 MSMQ將丟棄該消息。

使用"MessageQueue.Send(Object, MessageQueueTransaction)"方法

如果啓用負電源日記,你可以看看在死信隊列明白爲什麼消息被丟棄。

乾杯
約翰Breakwell

+0

啊查看更多信息, 好的。謝謝。感謝大家。 – Tony 2011-03-09 21:38:51

2

您需要創建之前,你可以發送給它(這是一次性操作,除非你刪除隊列)的隊列:

MessageQueue queue; 
if (MessageQueue.Exists(path)) 
    queue = new MessageQueue(path); 
else 
    queue = MessageQueue.Create(path); 
0

嘗試在您發送交換順序。

我不得不仔細檢查,但我敢肯定的順序是對象,標籤

queue.Send(msg, "inputMessage"); 
0

,如果您有事務性隊列,請務必確認您使用的交易

using(MessageQueueTransaction tx = new MessageQueueTransaction()) { 
    tx.Begin(); 
    queue.Send(message, tx); 
    tx.Commit(); 
} 

在另一篇文章Message does not reach MSMQ when made transactional