gpt4 book ai didi

c# - Azure的EventData.PartitionKey如何决定写入哪个分区?

转载 作者:太空狗 更新时间:2023-10-30 00:14:30 24 4
gpt4 key购买 nike

我正在尝试在 Azure 中实现事件中心。我成功创建了一个将消息发布到事件中心的生产者,以及一个读取消息的消费者。我的事件中心分为 16 个分区。在消费者方面,我按如下方式循环遍历其中每一个:

var eventHub = NamespaceManager.CreateFromConnectionString(builder.ToString()).GetEventHub("de-analytics-events");

foreach (var partitionId in eventHub.PartitionIds)
{
subscriberGroup.RegisterProcessor<EventProcessor>(new Lease
{
PartitionId = partitionId
}, new EventProcessorCheckpointManager());

Console.WriteLine("Processing: " + partitionId);
}

在调试器中查看这些值表明,在 16 个分区的情况下,eventHub.PartitionIds 的范围为“0”到“15”。

但是,在生产者端,我只能指定我的 EventData.PartitionKey,它是一个字符串,但并不直接对应于消费者端的字符串。例如。如果我指定 PartitionKey =“7”,则它不一定写入分区“7”。

阅读表明涉及某种哈希,但我并不是特别想随机猜测哈希为数字 0-15 的 16 个字符串。所以我想知道如何定义发布到哪个分区?

如需添加引用,this是我为了让最简单的案例工作而遵循的教程。

最佳答案

你是对的,哈希用于将分区键转换为给定分区。那么我的问题是,只要哈希算法均匀且一致地分配事件,为什么要真正关心消息分配到哪个分区呢?

是的,您可能会说您想知道,以便知道接收者是谁。但现实是,像这样的紧密耦合使得解决方案本质上很脆弱。您押注于让服务执行其需要执行的操作以保持流量健康,并意识到一旦您使用给定的分区键收到消息,您很可能始终使用该键收到消息。

更大的挑战是确保您使用的分区键策略有助于确保事件在分区之间相当均匀的分布(也就是不要为 10,000 个设备提供所有相同的分区键)。

关于c# - Azure的EventData.PartitionKey如何决定写入哪个分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25876671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com