Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser les bibliothèques de gestion Azure Event Hubs pour approvisionner dynamiquement des entités et des espaces de noms d’Event Hubs. Ce caractère dynamique permet des déploiements et des scénarios de messagerie complexes, et de déterminer ainsi par programmation les entités à approvisionner. Ces bibliothèques sont actuellement disponibles pour .NET.
Fonctionnalités prises en charge
- Création, mise à jour et suppression d’espaces de noms
- Création, mise à jour et suppression d’Event Hubs
- Création, mise à jour et suppression de groupes de consommateurs
Prérequis
Pour commencer à utiliser les bibliothèques de gestion d’Event Hubs, vous devez vous authentifier avec Microsoft Entra ID. Microsoft Entra ID vous oblige à vous authentifier en tant que principal du service pour pouvoir accéder à vos ressources Azure. Pour plus d’informations sur la création d’un principal du service, consultez ces articles :
- Utiliser le portail Azure pour créer une application et un principal du service Active Directory pouvant accéder aux ressources
- Créer un principal du service pour accéder aux ressources à l’aide d’Azure PowerShell
- Créer un principal du service pour accéder aux ressources à l’aide de l’interface de ligne de commande (CLI) Azure
Ces didacticiels vous fournissent un AppId
(ID de client), un TenantId
et un ClientSecret
(clé d’authentification), tous étant utilisés pour l’authentification par les bibliothèques de gestion. L’application Microsoft Entra doit être ajoutée au rôle Propriétaire de données Azure Event Hubs au niveau du groupe de ressources.
Exemple de code
Le modèle pour manipuler une ressource Event Hubs quelconque suit un protocole commun :
- Obtenez un jeton de Microsoft Entra ID en utilisant la bibliothèque
Microsoft.Identity.Client
. - Créer l’objet
EventHubManagementClient
. - Ensuite, utilisez l’objet client pour créer un espace de noms Event Hubs et un hub d’événements.
Voici l’exemple de code permettant de créer un espace de noms Event Hubs et un hub d’événements.
namespace event_hub_dotnet_management
{
using System;
using System.Threading.Tasks;
using Microsoft.Azure.ResourceManager.EventHubs;
using Microsoft.Azure.ResourceManager.EventHubs.Models;
using Microsoft.Identity.Client;
using Microsoft.Rest;
public static class EventHubManagementSample
{
private static string resourceGroupName = "<YOUR EXISTING RESOURCE GROUP NAME>";
private static string namespaceName = "<EVENT HUBS NAMESPACE TO BE CREATED>";
private const string eventHubName = "<EVENT HUB TO BE CREATED>";
private const string location = "<REGION>"; //for example: "eastus"
public static async Task Main()
{
// get a token from Azure AD
var token = await GetToken();
// create an EventHubManagementClient
var creds = new TokenCredentials(token);
var ehClient = new EventHubManagementClient(creds)
{
SubscriptionId = "<AZURE SUBSCRIPTION ID>"
};
// create an Event Hubs namespace using the EventHubManagementClient
await CreateNamespace(ehClient);
// create an event hub using the EventHubManagementClient
await CreateEventHub(ehClient);
Console.WriteLine("Press a key to exit.");
Console.ReadLine();
}
// Get an authentication token from Azure AD first
private static async Task<string> GetToken()
{
try
{
Console.WriteLine("Acquiring token...");
var tenantId = "<AZURE TENANT ID>";
// use the Azure AD app that's a member of Azure Event Hubs Data Owner role at the resource group level
var clientId = "<AZURE APPLICATION'S CLIENT ID>";
var clientSecret = "<CLIENT SECRET>";
IConfidentialClientApplication app;
app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.Build();
var result = await app.AcquireTokenForClient(new[] { $"https://management.core.windows.net/.default" })
.ExecuteAsync()
.ConfigureAwait(false);
// If the token isn't a valid string, throw an error.
if (string.IsNullOrEmpty(result.AccessToken))
{
throw new Exception("Token result is empty!");
}
return result.AccessToken;
}
catch (Exception e)
{
Console.WriteLine("Could not get a new token...");
Console.WriteLine(e.Message);
throw e;
}
}
// Create an Event Hubs namespace
private static async Task CreateNamespace(EventHubManagementClient ehClient)
{
try
{
Console.WriteLine("Creating namespace...");
await ehClient.Namespaces.CreateOrUpdateAsync(resourceGroupName, namespaceName, new EHNamespace { Location = location });
Console.WriteLine("Created namespace successfully.");
}
catch (Exception e)
{
Console.WriteLine("Could not create a namespace...");
Console.WriteLine(e.Message);
}
}
// Create an event hub
private static async Task CreateEventHub(EventHubManagementClient ehClient)
{
try
{
Console.WriteLine("Creating Event Hub...");
await ehClient.EventHubs.CreateOrUpdateAsync(resourceGroupName, namespaceName, eventHubName, new Eventhub());
Console.WriteLine("Created Event Hub successfully.");
}
catch (Exception e)
{
Console.WriteLine("Could not create an Event Hub...");
Console.WriteLine(e.Message);
}
}
}
}