首页 > 解决方案 > 与 Azure 事件中心通信时出现 EPOCH 错误

问题描述

我正在使用 Azure 事件中心来侦听我的应用程序中的实时数据。大多数情况下,它工作正常,但有时会引发以下错误 -

创建具有更高纪元“3109”的新接收器,因此当前接收器与纪元“3108”断开连接。如果您正在重新创建接收器,请确保使用更高的 epoch。TrackingId:eb2a6f970000494500f379f85b484a9f_C-1553490498_B22, SystemTracker:xxxxxxxxxx:eventhub:xxxxxxx~2730|$default, 时间戳:7/13/2018 6:48:54 AM。

并且应用程序停止处理数据。我在网上浏览了几篇文章,但找不到任何解决方案。在 MSDN 上,我读到

EPH 依赖于这样一个事实:“在任何给定时间,消费者组上只能有 1 个活跃的 epoch 接收器

但我不确定如何确保只有 1 个活动时期。此外,三个不同的环境(即开发、测试、生产)使用相同的事件中心。

任何建议都非常感谢..

标签: azuresignalrazure-eventhub

解决方案


听起来您正在运行应用程序的两个实例、两个并发类或使用相同事件中心使用者组的两个应用程序。事件中心消费者组实际上是指向事件流上某个时间点的指针。如果您尝试将一个消费者组与两个代码实例一起使用,那么您会遇到像您所看到的那样的冲突。

任何一个:

  1. 确保一次只有一个实例读取使用者组。
  2. 当您需要两个单独的程序或一组功能来同时处理事件中心时,请使用两个使用者组。
  3. 如果您希望并行化以提高性能,请查看事件中心分区以及如何利用独立处理每个分区的优势。

还有一种替代方案,即作为事件中心内部负载平衡的一部分,将事件中心分区切换到另一台主机。在这种情况下,您可能会看到您收到的错误。在这种情况下,只需记录并继续。

这里有一些很好的文档可以帮助你。


推荐阅读