spring - Spring Kafka 和处理中间的重新平衡
问题描述
在此链接https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html中,标题为“使用特定偏移量的记录”的部分提到了有效更新主题分区的策略“随时”在外部存储中的偏移量,然后在分区撤销(例如重新平衡)时简单地将任何中断的事务提交到外部存储。
现在,我假设此策略意味着在分区撤销回调中,我不需要处理传入的 TopicPartition 集合以获取偏移量,因为任何被中断的“正在进行的”事务都将被保留并包含需要提交/保存的分区偏移量。
(如果我在这方面错了,请纠正我。)
那么,鉴于这是 Spring Kafka 并且我正在使用 @Transactional 服务来保存必要的数据,上述策略是否相关/可行?换句话说,我不确定如何恢复/提交标记为@Transactional 的任何内容,因为事务管理器、边界等都在后台进行了处理。
这甚至是一个问题吗?如果是这样,实现这一战略的最佳方式是什么?手动跟踪事务(跨方法和回调听起来很可怕)?
还是我应该在分区撤销时通过 TopicPartition 集合并无论如何更新分区偏移量?
希望这是有道理的,因为我想确保我做对了。
提前致谢。
解决方案
2017 年 9 月发布
那本书用卡夫卡的术语来说已经很老了。现代版本;将偏移量保存在 Kafka 中要简单得多;只需确保您的消费者可以处理poll()
内部返回的所有记录max.poll.interval.ms
,以避免完全重新平衡。
推荐阅读
- php - 将尾部斜杠添加到 URL 时出现内部服务器错误
- c# - REST API 的版本控制格式
- django - 如何使用 Django 发送带有粗体字符串的电子邮件
- c# - OracleManaged.DataAcess 导致 ORA-12154:TNS:无法解析指定的连接标识符
- binding - VsCode - 绑定键盘键以水平滚动
- javascript - Nodejs + API 休息结构
- mysql - 使用 INET_ATON 时的 MySQL 性能问题
- asp.net-core - NuGet 包 XML 文档在 .NET Core 2.2 应用程序中不可见
- android - 无法使用蓝牙 LE 设备录制音频
- r - R和Python中不同的字符串对齐计算