是否可以使用 MSMQ 队列来平衡请求?如果我让客户端 1-n 向 WCF 服务发送请求,然后该服务将每个请求排入队列,并且在后台有 1-n 个服务器,每个服务器在下一个可用请求变得可用时抓取下一个可用请求,我会假设这有效地实现了负载平衡。 . 但是,我将如何获得回复?我意识到我可以在我的 WCF 服务中订阅“完成”事件,但是当我只关心一个事件时,我必须解析所有事件..我怎么能用这种架构完成某种回调机制?

最佳答案

如果您使用 MSMQ 发送事件,则没有内置的“获取响应”的概念。

这是一个解决方案:每个客户端都可以有自己的消息队列来监听。当工作人员完成他们的任务时,他们可以将“完成”消息发送回客户端。

但是服务器如何知道客户端消息队列的地址呢?

一种方法是提供客户端的消息队列地址作为每个函数中的参数。

更好的方法是将此地址作为自定义 header 值包含在内。
出于两个原因,自定义 header 解决方案是更好的方法。首先,这可以通过客户端的配置文件进行配置,允许在部署后更改队列详细信息。其次,通信“管道”的细节侵入函数调用抽象层是不可取的,而自定义 header 解决方案允许您避免这种情况。

有关使用的自定义 header 的示例,请参阅 this question

关于c# - 使用 msmq 队列对服务进行负载平衡?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8030727/

10-17 00:51