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

为什么Azure事件中心EventData的PartitionKey字段为空?,azure,azure-functions,azure-webjobs,azure-eventhub,Azure,Azure Functions,Azure Webjobs,Azure Eventhub,我正在使用Azure Functions 1.x从Azure事件中心消费EventData事件。但是,我注意到PartitionKey总是空的。然而,Offset和SequenceNumber都被填充 我知道发件人可以选择设置PartitionKey。事实上,设置它并不是为了性能。但是,我假设在到达消费者的过程中,PartitionKey将与处理EventData的分区一起设置 如果不是这样,那么发送偏移量和序列号有什么意义?每个分区维护自己的偏移量和序列号。如果我想重播一个事件,在不知道Par

我正在使用Azure Functions 1.x从Azure事件中心消费
EventData
事件。但是,我注意到
PartitionKey
总是空的。然而,
Offset
SequenceNumber
都被填充

我知道发件人可以选择设置
PartitionKey
。事实上,设置它并不是为了性能。但是,我假设在到达消费者的过程中,
PartitionKey
将与处理
EventData
的分区一起设置

如果不是这样,那么发送
偏移量
序列号
有什么意义?每个分区维护自己的
偏移量
序列号
。如果我想重播一个事件,在不知道
PartitionKey
的情况下如何重播

编辑:


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

您应该能够从EventData对象获取partitionKey属性。请参阅,

分区键
来自
分区ID

PartitionId与PartitionKey不同。分区键用于 确保相同的分区密钥位于相同的分区ID上。你可以 将分区关系的PartitionKey视为“f(PartitionKey)= “partitionId”,其中f是散列函数


如所述,如果发件人未设置分区键,则分区键将为空


您可以使用
PartitionContext
绑定来访问Azure函数中的
PartitionId

我曾经/正在使用
EventData
,但正如我所说,
PartitionKey
null
。如果在发送消息时未设置分区键,那么EventData对象将不会设置PartitionKey属性。这种行为甚至在使用EventProcessorHost(Azure函数使用的接收器)的控制台应用程序中也会重新出现。也许您可以向ServiceBus团队提出关于此行为的问题