azure - 与 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 个活动时期。此外,三个不同的环境(即开发、测试、生产)使用相同的事件中心。
任何建议都非常感谢..
解决方案
听起来您正在运行应用程序的两个实例、两个并发类或使用相同事件中心使用者组的两个应用程序。事件中心消费者组实际上是指向事件流上某个时间点的指针。如果您尝试将一个消费者组与两个代码实例一起使用,那么您会遇到像您所看到的那样的冲突。
任何一个:
- 确保一次只有一个实例读取使用者组。
- 当您需要两个单独的程序或一组功能来同时处理事件中心时,请使用两个使用者组。
- 如果您希望并行化以提高性能,请查看事件中心分区以及如何利用独立处理每个分区的优势。
还有一种替代方案,即作为事件中心内部负载平衡的一部分,将事件中心分区切换到另一台主机。在这种情况下,您可能会看到您收到的错误。在这种情况下,只需记录并继续。
推荐阅读
- python - Python:在异步函数中调用异步类
- mysql - 嗨,我如何使用 mysql 显示城市中薪酬第二高的员工
- hadoop - 格式化namenode后如何恢复datanode的版本文件
- python - 使用数据框附加 Excel/CSV 文件
- php - <<<_END 这究竟是做什么的?
- solver - 您如何在 Cubical Agda 中使用环求解器?
- python - 动态规划问题的记忆。为什么以下解决方案不起作用?
- java - 如何在以下 lambda exp 中添加同步?
- r - 如何在 ggplot2 中将图例键字形的形状更改为六边形?
- python - 检查两个列表中项目的接近外观 - Python