我需要一些设计建议,如果有人可以提出一个很棒的设计建议。
我实现了一个WCF服务,它从Windows服务器上的队列(MSMQ)读取消息并进一步处理它。现在我需要从另一个队列中读取消息并单独处理它们。我很难使用新服务或更新现有服务,该服务将并行执行不同队列的两个读数。
我在考虑性能的内容,这是最好的选择吗?
答案 0 :(得分:2)
您应该能够为每个消费者提供一个单独的线程。下面是伪代码。您需要确保的唯一事项是在服务关闭时向线程发出停止信号。
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个服务时,性能应该是等效的,因为它仍然是操作系统正在调度的线程。至于稳定性,在拆分服务时你可能会更有弹性,但这仍然不应该是一个问题,我希望单个服务方法在每个线程中应该足够稳定。
最后,我会选择最简单的方法。