消息队列解决方案的互联网连接,分布式c#客户端
本文关键字:分布式 客户端 连接 互联网 队列 解决方案 消息 | 更新日期: 2023-09-27 18:12:41
我正处于调查c#消息队列解决方案的初始阶段,我非常感谢任何经验,教训,战争故事等。关于MSMQ是否适合我们的配置,我也有几个具体的问题。
简单地说,我们有一个分布式体系结构:各种服务器端事件生成由我们部署的客户端检索的工作项。这些客户机连接到服务器,检索工作并处理它,然后返回到"等待工作完成"状态。
关于这些客户端的一些相关细节:
- 我们今天有几百个客户端安装,需要准备好在未来18个月内增长到数万个。
- 客户端从不向服务器提交任务——它们是"pull only"。
- 每个客户端的有效负载为<= 1K。
- 我们不需要重身份验证也不需要流量加密(尽管这是一个很好的奖励)
- 我们的客户端在各种MS操作系统上运行,>= WinXP-SP1。有些是windows活动目录的一部分,或windows域,或特设工作组。
- 大多数情况下,客户端处于空闲状态。我们希望有效地"等待工作",然后尽可能快地响应工作(即,我们希望客户端在排队后尽快接收工作项) 偶尔,我们的客户从互联网上消失了一段时间:他们的机器被关闭了一天,或一夜,等等。我们希望工作项在重新联机时到达。换句话说,我们确实需要消息可靠性。
- 我们控制所有的客户端和服务器代码,但不控制客户端环境(尽管我们的安装程序会安装必要的软件,如。net 3.5,如果还没有的话)
那么,考虑到上面的问题——MSMQ会"自然地"为我们工作吗?我还没有找到一个明确的答案,如何(或如果)MSMQ处理客户端监听消息时,他们不在域/活动目录,当他们通过互联网连接。到目前为止,我对MSMQ的阅读感觉相当"以企业为中心"——我们的非企业需求会成为MSMQ的问题吗?
在过去的类似设置中,您还使用了哪些其他解决方案?
当然,我还应该问什么问题?: -)
谢谢!
RabbitMQ听起来像是您的解决方案。
RabbitMQRabbitMQ .NET/WCF库
如果您正在寻找Internet上的中央服务器,该服务器具有等待远程客户机读取消息的队列,那么MSMQ不是适合您的产品(尽管我很痛苦地这样说)。MSMQ不能使用HTTP在Internet上拉消息。您将不得不打开135端口并使用RPC协议,这在Internet上不一定是一个好主意。
干杯约翰Breakwell