【发布时间】:2021-10-05 01:53:20
【问题描述】:
我的异步消费者从事件中心获取数据。我在每次事件处理后更新检查点。如果在处理事件时引发任何错误/异常,则不更新检查点。这样我们以后可以得到相同的事件并且我们不会跳过那些事件。但是,在我们重新启动服务器之前,我们不会收到这些处理失败的事件。
一旦服务器重新启动,我们将获得新事件以及未设置检查点的事件。
有什么方法可以在不重启的情况下获取它们(没有检查点的事件)?
而且我对检查点的行为也有点困惑。假设
Event 1 is processed. Checkpoint.
Event 2 throws an exception.
Event 3 throws an exception.
Event 4 is processed. Checkpoint.
现在,每当服务器重新启动时,检查点都会超过事件 2 和 3,因此它们将永远不会被重新处理。但是,为什么在事件 4 更新检查点时服务器重新启动时它们又回来了,它应该从事件 4 获取对吗?
【问题讨论】:
-
你能告诉我们每个事件在哪个分区吗?事件中心中的所有活动都基于每个分区发生。您正在检查事件 1 和 4。这可能会创建一个更新的检查点,或者它可能作为两个单独的检查点存在,具体取决于所涉及的分区。
标签: azure azure-eventhub