我正在为Azure EventHub编写一名工作人员,我希望能够建立在EventProcessorHost之上;但是,我无法在general documentation或API文档中找到一些可能相关的详细信息。
EventProcessorHost何时调用IEventProcessor ProcessEventsAsync?
当事件中心流中有新消息时,将调用此方法。 只有在处理完每个批次中的所有事件后,才能确保检查点。
虽然我们知道可枚举的消息中会有一些结果,但是文档没有说明我们是否可以期望在第一个正在进行时同时调用ProcessEventsAsync或第二个调用。鉴于关于何时检查点的指示既没有意义,因为第二次调用可以完成并且流中的检查点比第一次完成时处理的更远,但是文档中的确认将是很好的。
我假设每个调用CreateEventProcessor(或IEventProcessor,如果它们是唯一的)的输出被EventProcessorHost用于一个分区,而PartitionContext
同样,对CheckpointAsync的调用是否会对ProcessEventsAsync被调用产生任何影响。虽然它不应该允许以后的检查点,但我可以看到它是一个理性的选择。我还有其他一些关于检查指向机制的问题,我将在另一个问题中解决(链接将在这里)。
在进行CloseAsync调用之后是否会再进行一次ProcessEventsAsync调用(我会假设没有,但没有找到它)?是否使用从ProcessEventsAsync返回的Task未完成?
简而言之,对我来说有意义的答案是,对于给定的处理器,在前一次调用的任务完成之前,不会调用ProcessEventsAsync,但我无法从文档中确认这一点。
答案 0 :(得分:2)
虽然以下信息未经过验证,但从逻辑上讲它应该像这样工作 -
1)在一个分区内不应该同时调用ProcessEventAsync。否则,azure将如何保证一个分区内的消息排序。 2)我们可能必须异步处理每条消息。否则系统不能同时处理超过32条消息。 (假设有32个分区)。