azure - 读取指定时间的EventHub数据

标签 azure azure-storage azure-web-app-service azure-eventhub

我有一个正在运行的 EvenHub,它由 Windows 服务监听。不小心,WindowsService 停止工作了 2 天。如何从 EventHub 停止的地方读取数据?我的 OffSet 设置如下:

processorOptions.InitialOffsetProvider = (partionId) => DateTime.UtcNow;

我尝试再次启动Windows服务,但它从现在开始。

对此有什么想法吗?

最佳答案

您是否曾在 EventProcessor 中调用过 await context.CheckpointAsync(); ?如果没有,您将无法轻松做到这一点。通常,EventProcessor 会跟踪已处理的项目。您可以通过在一段时间后或 EventProcessor 处理多个项目后调用 await context.CheckpointAsync(); 来实现此目的。

使用

processorOptions.InitialOffsetProvider = (partionId) => DateTime.UtcNow;

您基本上告诉EventProcessor忽略之前到达的所有项目。那不是你需要的。删除此调用,如果您在处理代码中调用了 await context.CheckpointAsync();,它将恢复处理尚未处理的项目。如果没有可用的检查点,它将从流的开头开始,具体取决于配置的保留。然后,您将必须手动跳过可能已经处理过的项目。

一些背景阅读:

understanding check pointing in eventhub

https://blogs.msdn.microsoft.com/servicebus/2015/01/16/event-processor-host-best-practices-part-1/

http://blogs.biztalk360.com/understanding-consumer-side-of-azure-event-hubs-checkpoint-initialoffset-eventprocessorhost/

关于azure - 读取指定时间的EventHub数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013679/

相关文章:

java - 我想知道添加到 blob 存储的文件的位置

azure - 适合存储 Web 服务输出缓存的云服务吗?

azure - 尝试调用 B2C 登录时出现 no-access-control-allow-origin

sql-server - 在 Azure 中创建一个表,并将当前日期附加到表名称中

Azure 应用服务 VS WebJob

azure - 如何访问已部署的 AppService Web 应用程序中的文件?

azure - 更改 Azure 网站订阅

Azure Blob 存储和 HDF 文件存储

azure - 如何设置用于 Web 作业的存储帐户(通过门户)

c# - 在将 botauth 与 Azure 表存储结合使用时,登录的用户上下文也在新对话中使用