我有一个场景,我是 Azure 服务总线中的主题和订阅。该网站创建对主题的订阅。创建网站的另一个实例时,我想创建一个具有同一主题的唯一名称的新订阅。最好的方法是什么。该网站作为 azure 中的 Web 应用程序托管。
最佳答案
Azure 服务总线是一个代理,您的应用程序应该是一个竞争消费者(即同一队列的多个实例提要,因为这些只是您横向扩展的同一 Web 应用程序的实例)。话虽如此,有时您需要实现像回调这样的机制,通常用于与 Web 应用程序的特定实例进行通信,一直到客户端。为此,我建议不要考虑为每个 web 应用程序而不是每个实例创建订阅(可以使用 WEBSITE_INSTANCE_ID 作为唯一的订阅 ID 来完成)。正如 John 所评论的那样,每个实例订阅的问题在于,当您缩小规模时,与已取消配置的 webapp 实例的订阅关联的消息将保留在代理上而不进行处理。更不用说不断的扩展/缩小将生成孤立且不会被清理的订阅。
另一种方法是为每个 web 应用程序订阅并使用类似 SignalR with a backplane 将这些事件分发到特定实例。 ,这是专门为此目的而设计的。 SignalR 有多种底板实现(Redis、Azure ServiceBus、SQL Server)。
关于c# - 缩放时 Azure 服务总线唯一订阅名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105115/