共用方式為


事件中樞管理程式庫

您可以使用 Azure 事件中樞管理程式庫來動態佈建事件中樞命名空間和實體。 這個動態本質適合複雜的部署和傳訊案例,可讓您以程式設計方式決定要佈建的實體。 這些程式庫目前適用於 .NET。

支援的功能

  • 建立、更新、刪除命名空間
  • 建立、更新、刪除事件中樞
  • 建立、更新、刪除取用者群組

必要條件

若要開始使用事件中樞管理程式庫,您必須使用 Microsoft Entra ID 進行驗證。 Microsoft Entra ID 會要求您以提供 Azure 資源存取權的服務主體來進行驗證。 如需建立服務主體的詳細資訊,請參閱以下其中一篇文章:

這些教學課程會提供您 AppId (用戶端識別碼)、TenantIdClientSecret (驗證金鑰),全部由管理程式庫用於驗證。 Microsoft Entra 應用程式必須新增至資源群組層級的 Azure 事件中樞資料擁有者角色。

範例指令碼

操控任何事件中樞資源的模式,都會遵循共通的協定:

  1. 使用 Microsoft.Identity.Client 程式庫從 Microsoft Entra ID 取得權杖。
  2. 建立 EventHubManagementClient 物件。
  3. 然後,使用用戶端物件來建立事件中樞命名空間和事件中樞。

以下是建立事件中樞命名空間和事件中樞的範例程式碼。


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);
			}
		}
	}
}

下一步