【问题标题】:MSMQ ,reading multiple Queue messages from a single windows ServiceMSMQ,从单个windows服务读取多个队列消息
【发布时间】:2013-12-31 04:49:49
【问题描述】:

如果有人能推荐一个很棒的设计,我需要一些设计建议。

我实现了一个 WCF 服务,它从 Windows 服务器上的队列 (MSMQ) 读取消息并进一步处理它。现在我需要从另一个队列读取消息并单独处理它们。我很困惑去使用新服务或更新现有服务,该服务将从不同队列并行读取。

我正在考虑性能方面的最佳选择?

【问题讨论】:

    标签: c# wcf msmq


    【解决方案1】:

    您应该能够为每个消费者设置一个单独的线程。下面是伪代码。您需要确保的唯一事情是在服务关闭时向线程发出停止信号。

    new Thread(WorkerA) { IsBackground = true }.Start();
    new Thread(WorkerB) { IsBackground = true }.Start();
    
    void WorkerA() {
       while (true) { /* process queue a */ }
    }
    
    void WorkerB() {
       while (true) { /* process queue b */ }
    }
    

    在谈论 1 服务与 2 服务时,性能应该是相同的,因为它仍然是操作系统正在调度的线程。至于稳定性,在拆分服务时您可能会更有弹性,但这仍然不是太大的问题,我希望单个服务方法在每个线程中应该足够稳定。

    最后我会选择最简单的方法。

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2012-03-18
      • 2013-01-27
      • 2012-12-24
      • 2013-10-14
      相关资源
      最近更新 更多