В настоящее время у меня настроен экземпляр EventHub в Azure. Имеет 5 перегородок. Что я хочу знать, если PartitionKey
всегда должен быть числом от 0
до n-1
, где n
- это количество разделов.
У меня такой код:
private static async Task SendMessagesToEventHub(int numMessagesToSend)
{
var sender = eventHubClient.CreatePartitionSender("test1");
for (var i = 0; i < numMessagesToSend; i++)
{
try
{
var message = $"Message {i}";
Console.WriteLine($"Sending message: {message}");
await sender.SendAsync(new EventData(Encoding.UTF8.GetBytes(message)));
}
catch (Exception exception)
{
Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
}
await Task.Delay(10);
}
Console.WriteLine($"{numMessagesToSend} messages sent.");
}
Это вызывает исключение
Указанный раздел недействителен для отправителя или получателя раздела EventHub. Оно должно быть от 0 до 4.
В документации EventHub, вот что они говорят о PartitionKey
:
Класс EventData имеет свойство PartitionKey, которое позволяет отправителю указать значение, которое хешируется для создания назначения раздела. Использование ключа раздела гарантирует, что все события с одним и тем же ключом будут отправлены в один и тот же раздел в концентраторе событий. Общие ключи разделов включают идентификаторы сеанса пользователя и уникальный идентификатор отправителя.
Для меня это означает, что вы не ограничены int
, но можете использовать любой string
. Что мне не хватает?