C# 为每十个事件中心创建新事件中心命名空间的最佳方法
因为每个名称空间只允许有10个事件中心,所以我正在寻找一个好的算法,以便为列表中的每10个事件中心创建一个新的名称空间 注意:事件中心名称空间的列表正在传递给该方法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
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中的类,该类用于在测试运行期间动态创建/删除事件中心实例。