我正处于研究 C# 消息队列解决方案的初始阶段,如果有任何经验、教训、 war 故事等,我将不胜感激。我还有几个关于 MSMQ 是否适合我们的配置的具体问题。
简而言之,我们有一个分布式架构:各种服务器端事件生成工作项,这些工作项由我们部署的客户端检索。这些客户端连接到服务器,检索工作并处理它,然后返回“等待工作完成”。
关于这些客户的一些相关细节:
- 我们今天安装了数百个客户端,需要为在未来 18 个月内增长到数万个做好准备。
- 客户端从不向服务器提交任务——它们是“仅拉”。
- 每个客户端的有效负载 <= 1K。
- 我们不需要重量级身份验证,也不需要流量加密(尽管这是一个很好的奖励)
- 我们的客户在各种 MS 操作系统上运行,>= WinXP-SP1。有些是 Windows 事件目录、Windows 域或临时工作组的一部分。
- 大多数情况下,客户是闲置的。我们希望高效地“等待工作”,然后尽快响应工作(即,我们希望客户在排队后尽快收到工作项)
- 有时,我们的客户会从互联网上消失一段时间:他们的机器会关闭一天或一整夜等。我们希望工作项目在他们重新上线时到达。换句话说,我们确实需要消息的可靠性。
- 我们控制所有客户端和服务器代码,但不控制客户端环境(尽管我们的安装程序会安装必备软件,如 .NET 3.5,如果还没有的话)
那么,鉴于上述情况 - MSMQ 会“自然地”为我们工作吗?对于 MSMQ 如何(或是否)处理客户端不在域/事件目录中以及通过 Internet 连接时监听消息的问题,我还没有找到明确的答案。到目前为止,我对 MSMQ 的阅读感觉相当“以企业为中心”——我们的非企业需求会成为 MSMQ 的问题吗?
您过去在类似设置中使用过哪些其他解决方案?
当然,我还应该问哪些其他问题? ;-)
谢谢!
最佳答案
关于c# - 用于连接互联网的分布式 C# 客户端的消息队列解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922378/