azure - 为什么 Azure 事件中心 EventData 的 PartitionKey 字段为空?

标签 azure azure-functions azure-webjobs azure-eventhub

我正在使用 Azure Functions 1.x 从 Azure 事件中心使用 EventData 事件。但是,我注意到 PartitionKey 始终为空。然而,OffsetSequenceNumber 都已填充。

我知道发送者可以选择设置 PartitionKey。事实上,它是recommended出于性能原因不要设置它。但是,我假设在到达消费者的过程中的某个地方,将使用处理 EventData 的分区来设置 PartitionKey

如果情况并非如此,发送 OffsetSequenceNumber 有何意义?每个分区都维护自己的 OffsetSequenceNumber。如果我想重播一个事件,在不知道 PartitionKey 的情况下该怎么做?

编辑:

我刚刚发现,如果我绑定(bind)到 PartitionContext,我可以查看 EventData 来自的 PartitionId。为什么不使用它来填充 EventData 上的 PartitionKey?这是 Azure Functions 的错误吗?

最佳答案

PartitionKeydifferent来自 PartitionId:

PartitionId is different than PartitionKey. Partition keys are used to ensure same partition keys to land on the same partition ids. You can think PartitionKey to partitionId relation as "f(partitionKey) = partitionId" where f is a hashing function.

如果发送者未设置PartitionKey,则该PartitionKey将为空,如Ling Toh所述。 .

您可以使用 PartitionContext 绑定(bind)访问 Azure Functions 中的 PartitionId

关于azure - 为什么 Azure 事件中心 EventData 的 PartitionKey 字段为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49454349/

相关文章:

c# - 跨 Azure 进程锁定多个函数

c# - 使用 Google SMTP 在 Azure Webjob 中发送电子邮件

javascript - 无法从下载的 blob 中读取 ulatedStreamBody

azure - 无法包围 Azure 管道变量中的第一个串联字符串

python - Azure 函数 Python - 错误 "binding type(s) ' blobTrigger' 未注册”

azure - azure function 项目的运行命令中生成错误

c# - 在写入期间锁定 Azure blob

Azure 仪表板 - 时间线图表停止在最后一个日志记录而不是当前时间

azure - Microsoft.NET.Sdk.Functions 3.0.5 导致无法加载文件或程序集“Microsoft.CodeAnalysis,版本=3.4.0.0”

c# - 从 Azure WebJob 运行 Python 脚本