【发布时间】:2017-02-27 19:14:57
【问题描述】:
我目前在 Azure 中设置了一个 EventHub 实例。它有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 的 documentation 中,这是他们对 PartitionKey 的评价:
EventData 类有一个 PartitionKey 属性,它使发送者能够指定一个值,该值经过哈希处理以产生分区分配。使用分区键可确保将具有相同键的所有事件发送到事件中心中的同一分区。 常见的分区键包括用户会话 ID 和唯一的发件人 ID。
对我来说,这意味着您不仅可以使用int,还可以使用任何string。我错过了什么?
【问题讨论】:
标签: c# azure azure-eventhub