通过 net core SDK 创建一个 azure eventhub 消费者组?

Create an azure eventhub consumer group via net core SDK?

旧的 WindowsAzure.ServiceBus 库有一个调用 CreateConsumerGroupIfNotExists 在 azure eventhub 上创建一个消费者组。但是,这只是 Net Framework 4.6。我试图找出如何从 C# 在 netstandard2.0 中创建使用者,但我没有看到等效项。有办法吗?

一般情况下,您可以直接使用 REST API Create consumer group 以任何编程语言创建 EventHubs Consumer Group。

在您使用 C# 的方案中,您可以使用 API 适用于 .NET ConsumerGroupsOperationsExtensions.CreateOrUpdate(IConsumerGroupsOperations, String, String, String, String, ConsumerGroup) Method 的 Azure SDK。并且根据Visual Studio 2017的NuGet Package Manager的信息,如下图,相关包Microsoft.Azure.Management.EventHub支持Netstandard.Library (>=1.6.1),所以应该也支持你当前的环境netstandard2.0 .

Peter Pan 指出 C# API 对此的调用是正确的。以下是更多详细信息:

  • 在 Azure 中创建一个服务主体(或使用现有的)
  • 授予此服务主体"Owner" 访问事件中心实例(在门户中的 IAM => "Role Assignments" 下)

下面代码中的变量来自服务客户端、事件中心和订阅:

private static async Task EnsureConsumerGroup(string consumerGroupName)
{
    var context = new AuthenticationContext($"https://login.windows.net/{MY_TENANT_ID}");

    var token = await context.AcquireTokenAsync(
        "https://management.core.windows.net/",
        new ClientCredential(MY_CLIENT_ID, MY_CLIENT_SECRET)
    );
    var serviceClientCredentials = new TokenCredentials(token.AccessToken);
    var eventHubManagementClient = new EventHubManagementClient(serviceClientCredentials)
    {
        SubscriptionId = MY_SUBSCRIPTION_ID
    };

    var consumerGroupResponse = await 
eventHubManagementClient.ConsumerGroups.CreateOrUpdateWithHttpMessagesAsync(
        MY_RESOURCE_GROUP_NAME,
        MY_NAMESPACE_NAME,
        MY_EVENT_HUB_NAME,
        consumerGroupName,
        new ConsumerGroup() // I don't know what this parameter is supposed to do.
    );
}

想必您也会处理 consumerGroupResponse.Response 中的错误情况。

另请参阅: