直接通过不同Azure角色的横向扩展发送信号器消息

时间:2013-02-21 12:33:26

标签: signalr azureservicebus

我的Azure云服务应用程序中有两个角色:一个Web角色(此处为信号器连接)和一个辅助角色。

Web角色使用Azure服务总线作为其横向扩展提供程序。

在某些时间点,工作人员角色会发出某些事件。我想将这些数据直接发送给连接到Hub的客户端。

我当前的实现涉及worker角色将消息放置在Web角色订阅的服务总线队列上,然后Web角色通过HubContext调用将此消息转发给客户端。

我的问题是:如何从工作者角色直接将此消息发送给已连接的客户端?到目前为止,我已经考虑了3种方法:

  • 将信号器配置为Web角色,以便它们使用相同的servicebus主题。 - 这不会像工作者角色实例那样从用于Web角色的主题订阅中“窃取消息”。这似乎是最干净的方法,但配置是一个问题。

  • 使用.Net客户端发送集线器消息 - 这不是理想的,因为它会对Web角色施加不必要的负载,并且与上述方法相比,服务总线消息数量增加一倍。

  • 手动编写与主题相关的信号兼容消息 - 非常hacky并且可以成功破坏更改。

我知道该团队目前正在为下一个版本重新进行扩展,但这在某些时候是否可行?

编辑: 我注意到RabbitMq implementation支持这一点。

1 个答案:

答案 0 :(得分:1)

我的配置似乎问题是第一种方法不起作用。 但是,即使在循环中少了一条消息,该方法似乎端到端速度较慢(大约150毫秒)。

我会等待,看看在进行任何更改之前,横向扩展工作是否会对此方法进行任何改进。