【发布时间】:2013-12-31 04:49:49
【问题描述】:
如果有人能推荐一个很棒的设计,我需要一些设计建议。
我实现了一个 WCF 服务,它从 Windows 服务器上的队列 (MSMQ) 读取消息并进一步处理它。现在我需要从另一个队列读取消息并单独处理它们。我很困惑去使用新服务或更新现有服务,该服务将从不同队列并行读取。
我正在考虑性能方面的最佳选择?
【问题讨论】:
如果有人能推荐一个很棒的设计,我需要一些设计建议。
我实现了一个 WCF 服务,它从 Windows 服务器上的队列 (MSMQ) 读取消息并进一步处理它。现在我需要从另一个队列读取消息并单独处理它们。我很困惑去使用新服务或更新现有服务,该服务将从不同队列并行读取。
我正在考虑性能方面的最佳选择?
【问题讨论】:
您应该能够为每个消费者设置一个单独的线程。下面是伪代码。您需要确保的唯一事情是在服务关闭时向线程发出停止信号。
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 服务时,性能应该是相同的,因为它仍然是操作系统正在调度的线程。至于稳定性,在拆分服务时您可能会更有弹性,但这仍然不是太大的问题,我希望单个服务方法在每个线程中应该足够稳定。
最后我会选择最简单的方法。
【讨论】: