我的 Azure 云服务应用程序中有 2 个角色:一个 Web 角色(此处为信号连接)和一个辅助角色。
Web 角色使用 Azure 服务总线作为其横向扩展提供程序。
在某些时间点,工作者角色将发出某些事件。我想将此数据直接发送到连接到集线器的客户端。
我当前的实现涉及工作角色将消息放置在 Web 角色订阅的服务总线队列上,然后 Web 角色通过 HubContext 调用将此消息转发给客户端。
我的问题是:如何从工作角色直接将此消息发送给连接的客户端?到目前为止,我已经考虑了 3 种方法:
将信号器配置为 Web 角色,以便它们使用相同的服务总线主题。- 这没有按预期工作,因为工作者角色实例从为 Web 角色准备的主题订阅中“窃取消息”。这似乎是最干净的方法,但配置是一个问题。
使用 .Net 客户端发送集线器消息 - 这并不理想,因为它给 Web 角色带来了不必要的负载,并且与上述方法相比,服务总线消息量增加了一倍。
手动向主题写入与信号器兼容的消息 - 非常hacky并且易于破坏性更改。
我知道团队目前正在为下一个版本重写横向扩展,但这在某个时候可能吗?
编辑:我注意到RabbitMq implementation支持这一点。