azure - Azure EventHubConsumerClient 是否会在 40 分钟后超时?
问题描述
我正在通过 EventHubConsumerClient 类上的 receiveFromPartition 方法从 Azure EventHub 集群同步读取事件。
我像这样创建客户端一次:
EventHubConsumerClient eventHubConsumerClient = new EventHubClientBuilder()
.connectionString(eventHubConnectionString)
.consumerGroup(consumerGroup)
.buildConsumerClient());
然后,我只需使用 ScheduledExecutorService 每 1.5 秒通过以下方式检索事件:
IterableStream<PartitionEvent> receivedEvents = eventHubConsumerClient.receiveFromPartition(
partitionId, 1, eventPosition);
我一直在生产中使用 SDK 的 V3 运行类似的逻辑而没有问题,但是在升级到 V5 后我遇到了问题。
当我开始这个循环时,一切似乎都工作正常,但在成功执行 40 分钟左右后,EventHubConsumerClient 开始根据请求超时(等待 2 分钟后),即使 EventHub 实例中肯定有新数据。
对应日志的一个小例子:
com.azure.core.amqp.implementation.RetryUtil: TimeoutException error occurred. Retrying operation.
com.azure.messaging.eventhubs.implementation.SynchronousEventSubscriber$ReceiveTimeoutTask: Work: 5. Timeout encountered, disposing of subscriber.
这是一个错误还是在新的 SDK 版本中这样的连接可以持续多长时间存在已知限制?如果是这样,我如何确保我可以依赖的长期连接?
任何建议将不胜感激,谢谢!
解决方案
推荐阅读
- typescript - 使用重载函数处理联合,该函数在单个重载中不处理整个联合
- javascript - 如何优化数据结构以读取 mongo 或 sql 到客户端
- r - 如何为某个单元格中的多个个体制作二进制变量?
- html - 导航栏的引导响应调整大小问题
- visual-studio-code - VSCode - 使用 javascript 文件时,如何为块注释添加一对新的自定义分隔符?
- django - 如何创建一个折线图,指示用户在哪个月份写了更多或更少的博客?
- amazon-emr - 将 Spark 处理的中间数据复制到目标 S3 时出现 AWS EMR 性能问题
- python - 子类不继承父类
- python - Discord.py 附件未出现在邮件返回中
- php - Laravel livewire:你将如何实现等效于 Vue 的 v-if v-else