C# 使用.net标准以编程方式创建服务总线订阅

C# 使用.net标准以编程方式创建服务总线订阅,c#,azureservicebus,.net-standard,C#,Azureservicebus,.net Standard,我的场景:网站托管在云上,每个实例都为自己创建一个服务总线主题订阅,以侦听消息 我的问题:如何以编程方式创建订阅?新Azure Service Bus客户端的原始计划根本不包括管理平面,而是使用Azure Active Directory路由。正如你所指出的,这已经被证明是太有问题了。Microsoft消息传递团队制作了一个演示基本操作的示例 请注意,要使其与.NETCore2.0一起工作,有一个简单的方法 向前看,开发人员更喜欢使用连接字符串访问Service Bass,就像他们过去通过Azu

我的场景:网站托管在云上,每个实例都为自己创建一个服务总线主题订阅,以侦听消息


我的问题:如何以编程方式创建订阅?

新Azure Service Bus客户端的原始计划根本不包括管理平面,而是使用Azure Active Directory路由。正如你所指出的,这已经被证明是太有问题了。Microsoft消息传递团队制作了一个演示基本操作的示例

请注意,要使其与.NETCore2.0一起工作,有一个简单的方法

向前看,开发人员更喜欢使用连接字符串访问Service Bass,就像他们过去通过Azure Active Directory选项访问Service Bass一样。被提升以跟踪请求。是为.NET标准客户端提供一个轻量级的管理库

目前,选项要么利用旧客户端创建实体,要么使用Microsoft.Azure.Management.ServiceBus(或Fluent),直到管理包可用为止

更新


管理操作作为客户端3.1.0版本的一部分发布。

Microsoft.Azure.ServiceBus.3.1.0允许使用ConnectionString创建管理客户端

private async Task CreateTopicSubscriptions()
{
    var client = new ManagementClient(ServiceBusConnectionString);
    for (int i = 0; i < Subscriptions.Length; i++)
    {
        if (!await client.SubscriptionExistsAsync(TopicName, Subscriptions[i]))
        {
            await client.CreateSubscriptionAsync(new SubscriptionDescription(TopicName, Subscriptions[i]));
        }
    }
}
专用异步任务CreateTopicSubscriptions()
{
var客户端=新的管理客户端(ServiceBusConnectionString);
for(int i=0;i
我听到了。从第一天起就开始要求管理运作。好消息是团队正在倾听。也许为了使它更现实,这需要时间。建议在我回答的GITHUB问题中表达你的意见。Josh,你可以考虑把古斯塔沃的答案标记为被接受的答案,因为它会帮助解决这个问题的其他人。接受这个答案,因为它没有解决技术问题。它解决了目前图书馆状态的基本WTF等级。@josh you's Hilary:)完全同意沮丧程度。请插话讨论这个问题。你会发现ASB团队正在倾听并采取行动。@SeanFeldman,我认为Gustavo的回答现在应该成为例外的回答。@RajRao我不确定你希望我做什么。这就是SO的问题——答案是在问题的背景下提供的。当被问到这个问题时,还没有
ManagementClient
。所以当时的答案是正确的。我的回答只能表明计划已经实施。此外,我所链接的问题在3.1.0版中已经解决,也就是发布
ManagementClient
时。干杯。@josh,我很高兴找到这个问题,而不是那个经历挫折的人。毫无疑问,他现在的经验要好得多,就像是可以使用一样。这很难找到。那么FTW!SqlFilter呢?您还可以将其添加到代码中吗?有没有关于如何为EventHubs执行等效操作的消息?由于SubscriptionExistsAsync和CreateSubscriptionAsync都在后台执行REST调用,因此存在一种竞争——如果订阅是在两个调用之间创建的,则第二个调用会失败并出现异常。但我不知道如何解决它,因为我找不到任何具有“createif not exists”语义的东西。