我正在考虑在基于一堆 WCF 服务的产品中添加队列功能。我已经阅读了一些关于 MSMQ 的内容,首先我认为这是我需要的,但我不确定并且正在考虑将队列放入数据库表中。我想知道这里的某个人是否得到了一些关于走哪条路的反馈。
基本上我打算有一个通过http调用的外观WCF服务。外观服务应该只将所有传入消息写入队列,以便对调用系统做出快速响应。然后,队列中的消息应由另一个组件处理,WCF 服务或 Windows 服务取决于我对队列的选择。
该产品在具有 2 到 n 个 Web 服务器的负载平衡环境中运行。
我正在考虑的选项和我得到的问题是:
- 让外观 WCF 写入 MSMQ,然后让另一个 WCF 服务从这个队列中读取来处理消息。从我所读到的内容中,我对这种替代方案没有信心的是,它将如何在负载平衡的环境中工作。
1A。MSMQ 应该放在哪里?每个网络服务器上一个?一个在单独的服务器上?多个在单独的服务器上?(不考虑冗余的需要,并且在极少数情况下数据可能会丢失并重新发送)
1B。如果我希望系统冗余,设计会如何影响?我希望能够在不丢失该队列中的数据的情况下丢失持有 MSMQ 的服务器(它永远不会再次联机)。从我所读到的有关 MSMQ 的信息中,我只能选择将 MSMQ 放在 Windows 集群上。那是对的吗?(我想避免为此使用 Windows 集群)。
- 第二种设计方案是让外观 WCF 服务将队列写入数据库。然后有两个或多个 Windows 服务来做队列的处理。我对这个替代方案没有任何疑问。如果您想知道为什么我不选择这个,因为它对我来说似乎更简单,那是因为我想构建它而不向解决方案引入任何 Windows 服务,我相信 MSMQ 具有我不想的功能自己编写代码,我也对使用 MSMQ 感到好奇,因为我以前从未使用过它。
最好的问候哈坎