Azure SignalR未按预期充当背板:跨服务器无法给指定用户发消息
解决Azure SignalR跨服务器消息发送问题(ASP.NET Core微服务场景)
解决方案
虽非初始预期方案,但切换为Azure SignalR无服务器配置后已实现需求:
- 配置Azure SignalR服务管理器并将其注册为托管服务
- 实现自定义协商端点
- 当前已完成扩容,跨实例消息发送功能运行正常
- 核心依赖Azure SignalR管理SDK及协商服务器实现逻辑,让服务端直接与Azure SignalR服务交互,摆脱应用服务器实例对连接状态的依赖
问题背景
在ASP.NET Core中基于SignalR构建微服务时遇到跨实例消息发送障碍:
- App A部署5个包含SignalR Hub的实例,用户直接连接至这些实例的Hub节点
- App B通过负载均衡调用App A的控制器接口,需向连接到App A Hub的指定用户推送消息
- 仅当用户连接的App A实例与App B调用的实例相同时,消息发送成功;跨实例调用时消息发送失败
- 原计划用Azure SignalR作为背板解决扩容问题,但当前配置下连接仍由应用服务器实例管理,分组功能也存在相同的服务器依赖问题,无法实现任意实例向指定用户/分组发消息
内容的提问来源于stack exchange,提问作者collin gilmore
相关产品推荐
相关产品推荐

