msmq中没有消息

时间:2011-03-09 20:46:35

标签: c# 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);

        }

这有什么不对吗?

感谢。

4 个答案:

答案 0 :(得分:7)

很容易,这个。 您正在向事务性队列发送非事务性消息。 MSMQ将丢弃该消息。

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

如果启用Negative Source Journaling,您可以查看死信队列以查看邮件被丢弃的原因。

干杯
John Breakwell

答案 1 :(得分:2)

您需要先创建队列才能发送给它(这是一次性操作,除非您删除队列):

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

答案 2 :(得分:0)

尝试更换您的发送订单。

我必须仔细检查,但我很确定订单是对象,标签

queue.Send(msg, "inputMessage");

答案 3 :(得分:0)

如果您有交易队列,请务必检查您是否正在使用交易

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

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

中查看更多信息