.net - 负载平衡 WCF 并共享远程 MSMQ 以实现高吞吐量

标签 .net wcf msmq load-balancing

在大量阅读书籍和网络后,我注意到 WCF 和 MSMQ 可用于实现高吞吐量的信息提示。我看到的信息提到在从单个 MSMQ 队列读取的场中使用多个 WCF 服务。问题是我在这里和那里找到了提到可以完成高吞吐量的段落,但我似乎找不到如何实现它的文档。
以下是 MSDN 文章的摘录。

以下段落来自排队通信的最佳实践
http://msdn.microsoft.com/en-us/library/ms731093.aspx
要获得更高的吞吐量和可用性,请使用从队列中读取的 WCF 服务群。这要求所有这些服务在同一端点上公开相同的契约(Contract)。场方法最适用于具有高消息生产率的应用程序,因为它使许多服务都可以从同一队列中读取。

这就是我要解决的问题。我有一个 Intranet 应用程序,其中客户端向 WCF 服务发送请求。但我希望能够在场中的多台服务器上对 WCF 服务进行负载平衡。我还希望场中的这些 WCF 服务在队列中有可用项目时从远程 MSMQ 执行事务性读取。如果这是可能的,我遇到的一个问题是我不了解 WCF 从远程队列中检索消息的激活过程。

如果这是可能的,有没有人知道任何可以详细解释它的文章或网络广播?

巴德夫

最佳答案

我不知道任何文章,但作为概念证明,我针对 msmq 运行了现有 wcf 应用程序的多个实例。

发生的情况是,如果队列中已经存在 10 条消息,则它们仅由 wcf 实例之一处理。

然而,所有随后发布到队列中的消息在所有 wcf 实例之间几乎平均分配,提供了一个非常简洁的负载平衡解决方案。

您需要做的是创建一个针对 msmq 运行的 wcf 服务,确保其正常工作,然后通过运行越来越多的 wcf 服务实例来查看发生了什么

关于.net - 负载平衡 WCF 并共享远程 MSMQ 以实现高吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555213/

相关文章:

c# - WCF 数据服务 5.6 快速入门

wcf - 使用 WCF 和 MTOM 进行流式传输

Powershell Invoke-Command 导致不同的结果

client-server - 用于服务器到客户端通信的 MSMQ

.net - 如何设置虚拟 GPIO 环回

c# - MVC 中无法识别内容文件夹

ntfs - 是否有 .NET API 来返回给定路径的等效扩展路径字符串?

c# - 使用 .ashx 文件的 Web 表单的 URL 路由

c# - 为什么客户端 DataContracts 的 .Net 4.0 构建会导致 .Net 4.5 应用程序中的 MethodAccessException?

msmq - Rebus 和远程队列