我正在使用 Azure 事件中心来监听应用程序中的实时数据。大多数时候,它工作正常,但有时会抛出以下错误 -
New receiver with higher epoch of '3109' is created hence current receiver with epoch '3108' is getting disconnected. If you are recreating the receiver, make sure a higher epoch is used. TrackingId:eb2a6f970000494500f379f85b484a9f_C-1553490498_B22, SystemTracker:xxxxxxxxxx:eventhub:xxxxxxx~2730|$default, Timestamp:7/13/2018 6:48:54 AM.
并且应用程序停止处理数据。我在网上浏览了几篇文章,但找不到任何解决方案。在 MSDN 上,我读到
that EPH relies on the fact that "there can only be 1 active epoch receiver on a consumer group at any given time
但我不确定如何确保只有 1 个事件纪元。此外,同一事件中心由三个不同的环境使用,即开发、测试、生产。
任何建议都将受到高度赞赏..
最佳答案
听起来您正在运行应用程序的两个实例、两个并发类或使用同一事件中心使用者组的两个应用程序。事件中心使用者组实际上是指向事件流上的时间点的指针。如果您尝试将一个消费者组与两个代码实例一起使用,那么您会遇到像您所看到的那样的冲突。
两者之一:
- 确保一次只有一个实例读取使用者组。
- 当您需要两个单独的程序或功能集来同时处理事件中心时,请使用两个使用者组。
- 如果您希望通过并行化来提高性能,请查看事件中心分区以及如何利用独立处理每个分区的优势。
还有一种替代方案,其中事件中心分区切换到另一台主机,作为事件中心内部负载平衡的一部分。在这种情况下,您可能会看到收到的错误。在这种情况下,只需记录它并继续。
关于azure - 与 Azure 事件中心通信时出现 EPOCH 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51441518/