4

我正在为 Azure EventHub 编写一个工作者,我希望在EventProcessorHost之上构建;但是,我在通用 文档或 API 文档中都找不到一些可能相关的细节。

EventProcessorHost何时调用 IEventProcessor ProcessEventsAsync

当事件中心流中有新消息时调用此方法。确保仅在处理完每批中的所有事件后才进行检查点。

虽然我们知道在可枚举的消息中会有一些结果,但文档没有说明我们是否可以预期并发调用 ProcessEventsAsync 或在第一次调用正在进行时进行第二次调用。鉴于有关何时检查点的说明,因为第二个调用可以完成并且检查点在流中比第一个调用未完成时处理的更远,所以两者都没有多大意义,但文档中的确认会很好。

我假设每个对CreateEventProcessor(或 IEventProcessor,如果它们是唯一的)调用的输出由 EventProcessorHost 用于一个分区,并且PartitionContext

同样是对CheckpointAsync的调用是否对调用ProcessEventsAsync有任何影响。虽然它不应该允许以后的检查点,但我可以认为这是一个合理的选择。我还有一些关于检查点机制的其他问题,我将在另一个问题中解决(链接将转到此处)。

在发出CloseAsync调用后是否会再进行 ProcessEventsAsync 调用(我认为不会,但没有找到)?是否会使用未完成的 ProcessEventsAsync 返回的任务来完成?

简而言之,对我来说有意义的答案是,在先前调用的任务完成之前,对于给定的处理器,不会调用 ProcessEventsAsync,但我无法从文档中确认这一点。

4

1 回答 1

2

虽然以下信息未经验证,但从逻辑上讲它应该像这样工作 -

1) 一个分区内不应有任何并发​​调用 ProcessEventAsync。否则,天蓝色如何保证一个分区内的消息排序。2)我们可能必须异步处理每条消息。否则系统不能同时处理超过 32 条消息。(假设有 32 个分区)。

于 2014-12-23T08:26:08.617 回答