C# 为每十个事件中心创建新事件中心命名空间的最佳方法

C# 为每十个事件中心创建新事件中心命名空间的最佳方法,c#,azure,azure-eventhub,azure-sdk,C#,Azure,Azure Eventhub,Azure Sdk,因为每个名称空间只允许有10个事件中心,所以我正在寻找一个好的算法,以便为列表中的每10个事件中心创建一个新的名称空间 注意:事件中心名称空间的列表正在传递给该方法 var eventHubResources = GetRequiredService<List<EventHubResource>>(); foreach (var eventHubResource in eventHubResources) { eventHubResource.ResourceGr

因为每个名称空间只允许有10个事件中心,所以我正在寻找一个好的算法,以便为列表中的每10个事件中心创建一个新的名称空间

注意:事件中心名称空间的列表正在传递给该方法

var eventHubResources = GetRequiredService<List<EventHubResource>>();
foreach (var eventHubResource in eventHubResources)
{
    eventHubResource.ResourceGroup = resourceGroup;
    MyNamespace.IEventHub eventHub = new EventHub(logger);
    if (eventHubResource.CaptureSettings == null)
    {
       if (eventHubResources.IndexOf(eventHubResource) <= 9) 
       {
           await eventHub.CreateEventHubAsync(azure, eventHubNamespace[0], eventHubResource, null);
       }
       if ((eventHubResources.IndexOf(eventHubResource) > 9) && (eventHubResources.IndexOf(eventHubResource) <= 19)) 
       {
           await eventHub.CreateEventHubAsync(azure, eventHubNamespace[1], eventHubResource, null);
       }
       // and so on....
    }
    else
    {
       await eventHub.CreateEventHubAsync(azure, eventHubNamespace, eventHubResource, storageAccount);
    }
}
var eventHubResources=GetRequiredService();
foreach(eventHubResources中的var eventHubResource)
{
eventHubResource.ResourceGroup=ResourceGroup;
MyNamespace.IEventHub eventHub=新的eventHub(记录器);
如果(eventHubResource.CaptureSettings==null)
{

如果(eventHubResources.IndexOf(eventHubResource)9)和&(eventHubResources.IndexOf(eventHubResource)我没有测试代码,但您可以理解

public static async Task CreateNamespaces(List<string> eventhubNames, ServiceClientCredentials creds) {

int totalEventHubsInNamespace = 0;

var ehClient = new EventHubManagementClient(creds)
{
    SubscriptionId = "<my subscription id>"
};

foreach (var ehName in eventhubNames)
{
    if (totalEventHubsInNamespace == 0)
    {
        var namespaceParams = new EHNamespace()
        {
            Location = "<datacenter location>"
        };

        // Create namespace
        var namespaceName = "<populate some unique namespace>";
        Console.WriteLine($"Creating namespace... {namespaceName}");
        await ehClient.Namespaces.CreateOrUpdateAsync(resourceGroupName, namespaceName, namespaceParams);
        Console.WriteLine("Created namespace successfully.");
    }

    // Create eventhub.
    Console.WriteLine($"Creating eventhub {ehName}");
    var ehParams = new Eventhub() { }; // Customize you eventhub here if you need.
    await ehClient.EventHubs.CreateOrUpdateAsync(resourceGroupName, namespaceName, ehName, ehParams);
    Console.WriteLine("Created Event Hub successfully.");

    totalEventHubsInNamespace++;
    if (totalEventHubsInNamespace >= 10)
    {
        totalEventHubsInNamespace = 0;
    }
}
公共静态异步任务CreateNamespaces(列出eventhubNames、ServiceClientCredentials和creds){
int totalEventHubsInNamespace=0;
var ehClient=新的EventHubManagementClient(creds)
{
SubscriptionId=“”
};
foreach(eventhubNames中的var ehName)
{
if(totalEventHubsInNamespace==0)
{
var namespaceParams=new-EHNamespace()
{
Location=“”
};
//创建名称空间
var namespaceName=“”;
WriteLine($“正在创建命名空间…{namespaceName}”);
等待ehClient.Namespaces.CreateOrUpdateAsync(resourceGroupName、namespaceName、namespaceParams);
WriteLine(“已成功创建命名空间”);
}
//创建eventhub。
WriteLine($“正在创建eventhub{ehName}”);
var ehParams=new Eventhub(){};//如果需要,可以在此处自定义Eventhub。
等待ehClient.EventHubs.CreateOrUpdateAsync(resourceGroupName、namespaceName、ehName、ehParams);
WriteLine(“已成功创建事件中心”);
totalEventHubsInNamespace++;
如果(totalEventHubsInNamespace>=10)
{
totalEventHubsInNamespace=0;
}
}

}

你想用什么SDK实现这一点?我正在使用azure库。netThat太通用了。你能用Nuget URI指出它吗?这真的不重要,对吧?因为我只是在寻找比我建议的更好的逻辑。如果你对以Serkant描述的方式使用管理库的示例感兴趣首先,我建议查看SDK中的类,该类用于在测试运行期间动态创建/删除事件中心实例。