【发布时间】:2016-12-10 19:13:32
【问题描述】:
此问题与 SignalR 和 Azure 服务总线的 Scaleout 无关。我想在我的 SignalR Web 套接字应用程序中构建一个服务总线侦听器(例如 OnMessage),然后将消息相应地分发给连接的用户。消息将从各种单独运行的服务发布到集中式服务总线,连接到 Web 套接字服务器的 UI/浏览器应该接收这些消息。
选项 1:我可以将异步任务添加到集线器方法中,以订阅服务总线并按连接的用户进行过滤。这样做的问题是它使用线程池中的一个额外线程,并且将为用户启动的 每个 套接字连接执行此操作。我们的应用可以为每个打开的标签轻松启动 5-10 个或更多套接字。
选项 2:我可以将单个任务添加到 SignalR Startup.Configuration 方法,然后接收所有消息并将它们分发给适当的连接用户。我在这里遇到的问题是我无权访问用于发送到浏览器的 Clients 对象。
我觉得 SignalR 和 Service Bus 是一个很好的互补,可以实现近乎实时的通信,但我几乎找不到实现这样的场景。我觉得这应该是一个足够普遍的场景。也许我遗漏了一些明显的设计模式,它们会是更好的解决方案。
【问题讨论】:
标签: c# websocket signalr azureservicebus