Создать группу потребителей Azure EventHub с помощью SDK net core?

В старой библиотеке WindowsAzure.ServiceBus есть вызов CreateConsumerGroupIfNotExists для создания группы потребителей в концентраторе событий Azure. Однако это только Net Framework 4.6. Я пытаюсь понять, как создать потребителя в netstandard2.0 из С#, но не вижу эквивалента. Есть ли способ сделать это?


person mikebridge    schedule 17.12.2018    source источник
comment
... Я думаю, что должен быть вызов в Microsoft.Azure.ServiveBus, но я его не вижу.   -  person mikebridge    schedule 17.12.2018


Ответы (2)


Как правило, вы можете напрямую использовать REST API Create consumer group для создания группы потребителей EventHubs на любом языке программирования.

В вашем сценарии с использованием C# есть API Azure SDK для .NET ConsumerGroupsOperationsExtensions.CreateOrUpdate(IConsumerGroupsOperations, String, String, String, String, ConsumerGroup) Method, который вы можете использовать. И согласно информации из диспетчера пакетов NuGet в Visual Studio 2017, как показано на рисунке ниже, связанный пакет Microsoft.Azure.Management.EventHub поддерживает Netstandard.Library (>=1.6.1), поэтому он также должен поддерживать вашу текущую среду netstandard2.0.

введите здесь описание изображения

person Peter Pan    schedule 19.12.2018
comment
Вы знаете, что реализует IConsumerGroupsOperations? Я не вижу, какой объект должен расширяться... И зачем ему требуется ConsumerGroup и возвращает ConsumerGroup? - person mikebridge; 15.01.2019
comment
Хорошо, мне удалось выяснить, что это расширение EventHubManagementClient, и я смог вызвать CreateOrUpdateWithHttpMessagesAsync для создания новой группы потребителей. - person mikebridge; 16.01.2019

Питер Пэн правильно указывает на вызов C# API для этого. Вот еще некоторые подробности:

  • Создайте субъект-службу в Azure (или используйте существующий)
  • Предоставьте этому субъекту-службе доступ «Владелец» к экземпляру концентраторов событий (в разделе IAM => «Назначения ролей» на портале).

Переменные в приведенном ниже коде берутся из клиента службы, концентратора событий и подписки:

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.

Смотрите также:

person mikebridge    schedule 15.01.2019