【问题标题】:Can I change the Azure Function Event Hub trigger starting checkpoint?我可以更改 Azure 函数事件中心触发器启动检查点吗?
【发布时间】:2018-05-13 12:19:37
【问题描述】:

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

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

【问题讨论】:

    标签: azure-functions azure-eventhub


    【解决方案1】:

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

    以下是此类 blob 的示例:

    {"PartitionId":"0","Owner":null,"Token":null,"Epoch":567,"Offset":"14992",
     "SequenceNumber":156}
    

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

    由您决定是否可以/想要这样做。 AFAIK,没有简单而正式的方法可以做到这一点。

    【讨论】:

    • 我发现了这个。我采用了另一个函数,基本上复制了 Epoch、Offset 和 SequenceNumber,但它似乎仍然从一开始就处理(或者比它应该处理的消息多得多)。
    • @Josh 函数开始工作后,它是否改变了你的值?他们是在增长,还是在最初下降?
    • 它确实改变了它们,所有三个值都增加了。 Epoch 1,Offset 约 10k,SequenceNumber 约 40。
    • 我能够通过复制现有的一组检查点文件并将 Token 和 Owner 更改为 null 来完成这项工作,而无需触及数字。
    • 我刚刚删除了它们并重新处理了所有内容。成功了,谢谢!
    猜你喜欢
    • 2017-10-07
    • 2020-10-10
    • 2014-07-07
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多