我有一个场景,我是Azure Service Bus中的主题和订阅。该网站创建了对主题的订阅。当创建网站的另一个实例时,我想创建一个具有同一主题的唯一名称的新订阅。什么是最好的方法。该网站作为azure的webapp托管。
答案 0 :(得分:1)
Azure Service Bus是一个代理,您的应用程序应该是竞争使用者(即,同一队列的多个实例源只是您扩展的同一Web应用程序的实例)。说,有时你需要实现一个像回调这样的机制,通常用于与webapp的特定实例进行通信,一直到客户端。为此,我建议不要考虑为每个webapp创建订阅而不是每个实例(可以使用WEBSITE_INSTANCE_ID作为唯一订阅ID来完成)。就像John评论的那样,每个实例的订阅问题在于,当您扩展时,与已取消配置的webapp实例的订阅关联的消息将保留在未处理的代理上。更不用说持续的横向扩展/输入将生成将成为孤儿并且未被清理的订阅。
替代方案是每个webapp订阅一次,并使用SignalR with a backplane之类的内容将这些事件分发到特定实例,这是专为此目的而设计的。 SignalR有几个背板实现(Redis,Azure ServiceBus,SQL Server)。