如何在 java 中以编程方式创建 azure 事件中心主题?

How to create azure event hub topic programmatically in java?

我想知道 code/class 用于在 java 中创建 azure eventhub 主题。

我搜索了一下,发现我们可以像下面这样使用 .Net 创建。

var manager = new Microsoft.ServiceBus.NamespaceManager("mynamespace.servicebus.windows.net");
var description = manager.CreateEventHub("MyEventHub");

我想要 java..可以吗?

根据我的经验,您需要执行两个步骤来为 Java 中的 Azure 事件中心创建命名空间和实体,如下所示。

创建命名空间:

  1. 使用 Azure SDK for Java 创建 EventHub 命名空间。

    首先在Maven工程的pom.xml文件中添加依赖

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure</artifactId>
        <version>1.1.0</version>
    </dependency>
    

    这是我使用应用程序令牌凭据的示例代码。

    String clientId = "<your client id regiested on AAD>";
    String domain = "<your talnet id or domain name>";
    String secret = "<your client key>";
    String subscription = "<your subscription id>";
    AzureTokenCredentials cred = new ApplicationTokenCredentials(clientId, domain, secret, AzureEnvironment.AZURE);
    Azure azure = Azure.configure().authenticate(cred).withSubscription(subscription);
    
    String name = "<your eventhub namespace name>";
    String region = "<your eventhub region like 'East Asia'>";
    String resourceGroupName = "<your resource group name>";
    String resourceType = "namespaces";
    String providerNamespace = "Microsoft.EventHub";
    azure.genericResources().define(name).withRegion(region)
            .withExistingResourceGroup(resourceGroupName).withResourceType(resourceType)
            .withProviderNamespace(providerNamespace).withoutPlan()
            .create();
    
  2. 在 Java.

  3. 中通过事件中心命名空间的 REST API Create Or Update 创建 EventHub 命名空间

创建实体:

  1. 通过 Java.
  2. 中事件中心的 REST API Create Or Update
  3. 通过 Java.
  4. 中实体管理 REST 的 REST API Create Event Hub
  5. 如下图在Azure portal上创建实体即可。

否则,您可以尝试按照文档Create an EventHubs namespace, Event Hub, and consumer group使用Azure SDK通过Java中的ARM模板创建它。

azure.deployments().define("<deployment-name>").withExistingResourceGroup("<resource-group-name>").withTemplate("<template-uri>").withParameters("<parameters required in the template>").withMode(DeploymentMode.COMPLETE).create();

希望对您有所帮助。