我可以更改 Azure 函数事件中心触发器启动检查点吗?

Jos*_*osh 3 azure-eventhub azure-functions

当我建立一个新的 Azure 函数来监听我们的事件中心,以及一个新的消费者组时,它会获取所有发送到事件中心的消息,即使是从几个月前开始的。我认为将集线器上的消息保留时间设置为一天会限制这一点,但显然不是。无论如何,我真的只希望新的 Azure Function 从初始部署或测试点开始接收事件,但是我不知道如何指定初始启动检查点,因为这些东西是由 AF 在存储中神奇地完成的。

如果我手动执行集线器逻辑,我可以指定此检查点并从任意时间开始,例如当前时间。有没有办法用 Azure 函数来复制它?

Mik*_*kov 7

好消息是是的,您可以更改检查点。没有什么神奇之处:检查点存储在 Blob Storage ->azure-webjobs-eventhubs容器中的 Blob 中,名称类似于yournamespace.servicebus.windows.net/yourhub/$Default/X,其中$Default是消费者组名称和X分区号。

这是此类 blob 的示例:

{"PartitionId":"0","Owner":null,"Token":null,"Epoch":567,"Offset":"14992",
 "SequenceNumber":156}
Run Code Online (Sandbox Code Playgroud)

坏消息是,您需要知道您想要开始的那一刻的偏移量,而您可能不知道。然后,您需要继续手动或使用自定义代码修改 blob。您应该在 Function App 启动之前执行此操作。

是否可以/想要这样做由您决定。AFAIK,没有简单和官方的方法来实现这一点。