4

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

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

在某些时间点,工作者角色将发出某些事件。我想将此数据直接发送到连接到集线器的客户端。

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

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

  • 将信号器配置为 Web 角色,以便它们使用相同的服务总线主题。- 这没有按预期工作,因为工作者角色实例从为 Web 角色准备的主题订阅中“窃取消息”。这似乎是最干净的方法,但配置是一个问题。

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

  • 手动向主题写入与信号器兼容的消息 - 非常hacky并且易于破坏性更改。

我知道团队目前正在为下一个版本重写横向扩展,但这在某个时候可能吗?

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

4

1 回答 1

1

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

在进行任何更改之前,我将拭目以待,看看扩展工作是否会对这种方法带来任何改进。

于 2013-02-26T16:44:14.630 回答