事件中心检查点不获取事件直到服务器重新启动



从事件中心获取数据的异步消费者。我在每次事件处理后更新检查点。当处理事件时引发任何错误/异常时,则不更新检查点。这样我们就可以得到相同的事件我们不会跳过那些事件。但是,在我们重新启动服务器之前,我们不会得到这些处理失败事件。

一旦服务器重新启动,我们将获得新的事件以及未检查点的事件。

有没有办法,我们可以得到他们(事件不是检查点)没有重启?

而且我对检查点行为有点困惑。对于假设

Event 1 is processed. Checkpoint.
Event 2 throws an exception.
Event 3 throws an exception.
Event 4 is processed. Checkpoint.

现在无论何时服务器重启,检查点都经过事件2和3,因此它们永远不会被重新处理。但是,当服务器重新启动时,当检查点在事件4更新时,它们是如何回来的,它应该从事件4中获取对吗?

简短的回答是"不是来自同一个消费者";

Event Hubs是一个事件流,可以以仅向前的方式读取;您不能倒带流并就地重新读取事件。要倒带,必须创建一个新的链接,并指定流中较早的起始位置。

来自Event Hubs SDK的消费者客户端读取事件并将它们发送到您的代码中进行处理。读取的每个事件只触发一次——处理代码负责判断如何触发。如果您的处理以一种您认为是暂时的方式失败,那么确保对该事件的重试应该作为处理逻辑的一部分来完成,对于以后想要重新访问的事件,任何形式的死信也是如此。

最新更新