2011-03-09 15 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