【问题标题】:No message in msmqmsmq 中没有消息
【发布时间】:2011-07-12 05:42:02
【问题描述】:

我编写了一个控制台应用程序,将消息添加到本地队列。但是,没有插入任何消息。

我将队列创建为事务性并插入如下:

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

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

        }

这有什么问题吗?

谢谢。

【问题讨论】:

    标签: c# msmq


    【解决方案1】:

    简单,这个。 您正在向事务队列发送非事务消息。 MSMQ 将丢弃该消息。

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

    如果您启用负源日志,您可以查看死信队列以了解消息被丢弃的原因。

    干杯
    约翰·布雷克韦尔

    【讨论】:

    • 啊,好吧。谢谢。谢谢大家。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      尝试在发送时交换订单。

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

      queue.Send(msg, "inputMessage");
      

      【讨论】:

        【解决方案4】:

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

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

        在另一个帖子中查看更多信息Message does not reach MSMQ when made transactional

        【讨论】:

          猜你喜欢
          • 2016-04-17
          • 1970-01-01
          • 1970-01-01
          • 2011-04-21
          • 2013-06-07
          • 2011-02-06
          • 2010-11-05
          • 1970-01-01
          相关资源
          最近更新 更多