MSMQ,从单个windows服务读取多个队列消息

本文关键字:队列 消息 读取 服务 单个 windows MSMQ | 更新日期: 2024-09-23 06:08:57

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

我实现了一个WCF服务,它从windows服务器上的队列(MSMQ)中读取消息并对其进行进一步处理。现在我需要从另一个队列中读取消息并分别处理它们。我很困惑是使用一个新的服务还是更新现有的服务,这将并行地从不同的队列中读取两个数据。

我在想,综合表现,哪一个是最好的选择?

MSMQ,从单个windows服务读取多个队列消息

您应该能够为每个使用者提供一个单独的线程。下面是伪代码。您只需要确保在服务关闭时向线程发出停止信号。

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个服务时,性能应该是相等的,因为它仍然是由操作系统调度的线程。至于稳定性,在拆分服务时,您可能会更有弹性,但这仍然不应该是太大的问题,我希望单服务方法在每个线程中都应该足够稳定。

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