我有一个关于如何通过.NET应用程序从Event Hub查看最新数据的问题。我们的要求是每小时不断读取/获取Event Hub中的最后1天数据。例如,在6点钟,我想从昨天的6点到今天的6点获取数据。然后,在7点钟,我想从昨天的7点到今天的7点得到数据。
我曾尝试在tutorial之后接收来自Azure事件中心的事件。但它并不能满足我的要求。我对这个接收事件过程的理解是,每当有一个新事件进入事件中心时,将设置一个信号并触发EventProcessorHost class
以获取事件数据。 (我怀疑我的理解是否正确。)但是,在这种方法中,事件数据只能被访问一次。它无法在下一个接收操作中访问,因为它在事件中心中消失。
有没有一种方法可以达到上述要求?
同时,我也想知道如何在接收事件过程中使用“offset”。我知道它的概念,但更好的是有一个如何使用它的演示。
如果您有任何建议,我将不胜感激。 :)
这不是设计事件中心的场景。它旨在大规模处理传入的数据,典型的用例是尽可能快地处理数据。
在您的情况下,您希望一次又一次地处理大致相同的数据,每隔一小时。 EventProcessrHost
意味着在后台进程中持续运行。
以包含小时组件的格式将传入数据存储到blob存储可能要容易得多,例如container \ date \ time \ blob1.json(\ container \ 2019-12-22 \ 07 \ blob1.json)并且具有,例如,一个计划触发了azure function,而不是根据触发时间知道process的blob。
我对这个接收事件过程的理解是,每当有一个新事件进入事件中心时,将建立一个信号并触发EventProcessorHost类以获取事件数据。 (我怀疑我的理解是否正确。)但是,在这种方法中,事件数据只能被访问一次。它无法在下一个接收操作中访问,因为它在事件中心中消失。
这是正确的,EventProcessorHost将在新事件上运行。使用检查点的概念处理事件一次。您可以使用偏移来回放流,但我认为我的替代方案更容易。
另一项可能对您有用且与事件中心配合良好的技术是Azure Stream Analytics,它允许您定义基于时间的窗口,但24小时可能对此有点太多,不确定。