【问题标题】:Receiving MSMQ messages with Windows Service使用 Windows 服务接收 MSMQ 消息
【发布时间】:2010-12-04 01:23:17
【问题描述】:

我正在用 C# 创建一个 Windows 服务。

收听消息的最佳方式是什么?我该如何正确编码??

【问题讨论】:

    标签: c# windows-services msmq


    【解决方案1】:

    你不听。您配置MSMQ Activation 以在消息到达时激活您的组件。该链接包含您需要的所有详细信息、代码和配置。

    【讨论】:

    【解决方案2】:

    如前所述,如果您可以使用,MSMQ 激活可能是最好的方法。或者,这是我使用过的代码:

    var ts = new TimeSpan(0, 0, 10);
    MessageQueue q = GetQueue<T>();
    while (true)
    {
      try
      {
        Message msg = q.Receive(ts);
        var t = (T)msg.Body;
        HandleMessage(t);
      }
      catch (MessageQueueException e)
      {
        // Test to see if this was just a timeout.
        // If it was, just continue, there were no msgs waiting
        // If it wasn't, something horrible may have happened
      }
    }
    

    【讨论】:

    • 如果使用消息枚举器函数而不是Receive,则不必担心队列为空时会超时。
    • 很好的咨询!我已经出去一周了,我们知道尝试重新进入一个项目是什么感觉,但我会尝试一些事情。 Grauenwolf,您能否发布一个简短的 Recieve 示例?我已经对此进行了研究,但我并不完全理解它。尤其是在假期一个多星期之后。谢谢....
    • 您可能想提及GetQueue&lt;T&gt;() 方法的下落。
    猜你喜欢
    • 2018-08-28
    • 2010-09-27
    • 2013-10-05
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2010-11-14
    • 2011-08-13
    相关资源
    最近更新 更多