【发布时间】:2016-04-12 16:41:19
【问题描述】:
在我们的系统中,我们为每个用户运行一个或多个前端实例。它们托管在多个 Citrix 服务器上。
我们希望在发生某些事情时通知用户,并确保消息到达每个前端。我们如何做到这一点?
虽然最初是使用发布/订阅,但我们不是每个前端都需要一个队列吗?
或者,您能否以某种方式传递消息,确保前端的每个处理程序实例都能收到消息?
【问题讨论】:
标签: rebus
在我们的系统中,我们为每个用户运行一个或多个前端实例。它们托管在多个 Citrix 服务器上。
我们希望在发生某些事情时通知用户,并确保消息到达每个前端。我们如何做到这一点?
虽然最初是使用发布/订阅,但我们不是每个前端都需要一个队列吗?
或者,您能否以某种方式传递消息,确保前端的每个处理程序实例都能收到消息?
【问题讨论】:
标签: rebus
如果您想使用 Rebus 将消息实际发送到前端,您将需要每个客户端实例一个输入队列,这是绝对正确的。
不过,我通常建议不要使用 Rebus 直接与客户沟通,因为它对于更“稳定”的事情来说非常方便。
问题是:客户来来去去——这就是“客户”的本质。 Rebus 等消息传递库(例如 NServiceBus、MassTransit 等)通常在端点数量波动不大时效果最佳。
您仍然可以使用 Rebus 在服务器上进行协调,作为以可靠的方式实现异步事物的有用工具,但我建议您使用类似 SignalR 的东西来推送通知,最后一英寸的出路服务器到客户端。
实际上,SignalR 正是您所需要的,因为它为您提供了一个模型来保留您可以向其推送消息的任意客户端组。
【讨论】: