从指定时间读取EventHub数据

时间:2016-10-13 06:22:46

标签: azure azure-storage azure-web-sites azure-eventhub

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

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

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

对此有何想法?

1 个答案:

答案 0 :(得分:3)

您是否曾在await context.CheckpointAsync();中致电EventProcessor?如果不是,你将无法轻易做到这一点。通常,EventProcessor会跟踪已处理的项目。您可以在一段时间后或await context.CheckpointAsync();处理完一些项目后致电EventProcessor来执行此操作。

使用

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/