如何验证我是否已从 EventHub 分区读取所有可能的事件?

How can I verify that I've read all possible events from an EventHub partition?

我希望能够在我的客户端中验证我已经处理了来自 EventHub 分区的所有可能事件,但我无法找到执行此操作的最佳方法。我正在使用 Java EventHubClientPartitionReceiver 对象。

最初我认为我可以通过记录我看到的序列号并与我期望的序列号范围进行比较来做到这一点(消息总数 = max_seq_number - min_seq_number)-但似乎不能保证序列号递增 1,所以这似乎不起作用 ()。

如有任何想法,我们将不胜感激!

序号始终递增 1,保证每个分区。

您可以在接收器选项中启用接收器运行时指标,并将当前接收到的序列号与运行时指标中报告的主题分区的 lastSequenceNumber 进行比较。比较会告诉您还有多少事件等待接收。

在此处查看代码示例 - https://github.com/Azure/azure-sdk-for-java/blob/c876a6e0c24a6b02113528e9bcf8d789e9b3c6c9/sdk/eventhubs/microsoft-azure-eventhubs/src/test/java/com/microsoft/azure/eventhubs/sendrecv/ReceiverRuntimeMetricsTest.java#L76