我正在创建一个要放入云中的应用程序。这个应用程序有一个主要功能。
它代表其他用户托管套接字 CLIENT 会话(想想 iPhone 的 Beejive IM,它为客户端托管 IM 会话以维护这些 IM 网络上的状态,允许客户端随意连接/断开连接,而不会中断 IM 网络连接)。
现在,我现在计划的方式是,一个“工作实例”可能只能处理有限数量的客户端会话(为了争论,假设为 50,000)。这些会话将是非常长期的工作任务。
我试图解决的问题是我有时需要对特定的客户端会话执行任务(例如:如果我需要断开客户端会话)。使用 Azure,我是否能够排队一个较小的任务,只有托管该特定客户端会话的实例才能出列?
现在我正在考虑将 GoGrid 作为我的提供商,我通过使用 Apache 的 Active Messaging Queue 软件解决了这个问题。我的 Web 应用程序将分配给特定实例 ID 的“断开连接”任务排入队列。因此,每个客户端会话都分配给特定的实例 ID。然后,该实例仅将分配给它的“断开连接”任务出列。
我想知道在 Azure 上做类似的事情是否可行,以及我通常会如何做。我喜欢不必设置许多不同的 VM 来扩展的想法,而只需部署一个包。此外,最好使用 Azure 的队列而不是集成第三方产品,例如 Apache ActiveMQ 甚至 MSMQ。