You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java SDK程序化创建/删除Azure Event Hub?需哪些Maven依赖

编程创建/删除Azure Event Hub及所需Maven依赖

你之前引入的azure-messaging-eventhubs仅负责Event Hub的消息收发,azure-resourcemanager是基础资源管理父包,并不包含Event Hub专属的资源操作API。要实现Event Hub实例的创建、删除等生命周期管理,需要添加专门的资源管理依赖,并使用对应的SDK API。

所需Maven依赖

添加以下两个核心依赖:

<!-- Azure Event Hub 专属资源管理依赖,提供实例/命名空间的创建、删除等API -->
<dependency>
    <groupId>com.azure.resourcemanager</groupId>
    <artifactId>azure-resourcemanager-eventhubs</artifactId>
    <version>2.34.0</version> <!-- 建议使用Maven中央仓库的最新稳定版 -->
</dependency>
<!-- Azure 身份认证依赖,用于完成服务主体、Managed Identity等方式的身份验证 -->
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.12.0</version>
</dependency>

说明:

  • azure-resourcemanager-eventhubs是专门针对Event Hub资源生命周期设计的SDK,包含命名空间、Event Hub实例的所有管理操作。
  • azure-identity提供多种认证方式,是资源管理操作的必要前提,确保你的代码能合法访问Azure资源。

编程创建Azure Event Hub

前提准备

确保你有一个Azure服务主体(或使用Managed Identity、Azure CLI认证),并为其分配Event Hub Contributor或更高权限的角色(在目标资源组/订阅范围内)。

创建代码示例

import com.azure.core.credential.TokenCredential;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.resourcemanager.eventhubs.EventHubsManager;
import com.azure.resourcemanager.eventhubs.models.EventHub;

public class EventHubCreationExample {
    public static void main(String[] args) {
        // 替换为你的Azure资源信息
        String tenantId = "你的租户ID";
        String clientId = "服务主体客户端ID";
        String clientSecret = "服务主体客户端密钥";
        String subscriptionId = "你的订阅ID";
        String resourceGroupName = "目标资源组名称";
        String namespaceName = "Event Hub命名空间名称"; // 可提前创建或在代码中生成
        String eventHubName = "要创建的Event Hub名称";

        // 构建认证凭据
        TokenCredential credential = new ClientSecretCredentialBuilder()
                .tenantId(tenantId)
                .clientId(clientId)
                .clientSecret(clientSecret)
                .build();

        // 初始化Event Hub管理客户端
        AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
        EventHubsManager manager = EventHubsManager.configure()
                .authenticate(credential, profile)
                .withSubscription(subscriptionId);

        // 若命名空间不存在,可先创建命名空间
        manager.namespaces().define(namespaceName)
                .withRegion("eastus") // 替换为你需要的区域
                .withExistingResourceGroup(resourceGroupName)
                .create();

        // 创建Event Hub实例
        EventHub createdEventHub = manager.eventHubs().define(eventHubName)
                .withExistingNamespace(resourceGroupName, namespaceName)
                .withPartitionCount(4) // 设置分区数量
                .withMessageRetentionInDays(7) // 设置消息保留天数
                .create();

        System.out.println("Event Hub创建成功,ID: " + createdEventHub.id());
    }
}

编程删除Azure Event Hub

删除代码示例

import com.azure.core.credential.TokenCredential;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.resourcemanager.eventhubs.EventHubsManager;

public class EventHubDeletionExample {
    public static void main(String[] args) {
        // 替换为你的Azure资源信息
        String tenantId = "你的租户ID";
        String clientId = "服务主体客户端ID";
        String clientSecret = "服务主体客户端密钥";
        String subscriptionId = "你的订阅ID";
        String resourceGroupName = "目标资源组名称";
        String namespaceName = "Event Hub命名空间名称";
        String eventHubName = "要删除的Event Hub名称";

        // 构建认证凭据
        TokenCredential credential = new ClientSecretCredentialBuilder()
                .tenantId(tenantId)
                .clientId(clientId)
                .clientSecret(clientSecret)
                .build();

        // 初始化Event Hub管理客户端
        AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
        EventHubsManager manager = EventHubsManager.configure()
                .authenticate(credential, profile)
                .withSubscription(subscriptionId);

        // 删除指定的Event Hub实例
        manager.eventHubs().delete(resourceGroupName, namespaceName, eventHubName);

        System.out.println("Event Hub删除成功");
    }
}

关键注意事项

  • 权限配置:确保用于认证的身份(服务主体/Managed Identity)拥有足够的权限,避免出现AuthorizationFailed错误。
  • 版本兼容性:azure-resourcemanager-eventhubs的版本建议与azure-resourcemanager保持大版本一致,避免依赖冲突。
  • 本地调试:如果是本地开发,可使用AzureCliCredential替代ClientSecretCredential,直接复用Azure CLI的登录状态,无需配置服务主体信息。

内容的提问来源于stack exchange,提问作者Yaroslav Lukianenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:46