首页 > 解决方案 > Spring Kafka 和处理中间的重新平衡

问题描述

在此链接https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html中,标题为“使用特定偏移量的记录”的部分提到了有效更新主题分区的策略“随时”在外部存储中的偏移量,然后在分区撤销(例如重新平衡)时简单地将任何中断的事务提交到外部存储。

现在,我假设此策略意味着在分区撤销回调中,我不需要处理传入的 TopicPartition 集合以获取偏移量,因为任何被中断的“正在进行的”事务都将被保留并包含需要提交/保存的分区偏移量。

(如果我在这方面错了,请纠正我。)

那么,鉴于这是 Spring Kafka 并且我正在使用 @Transactional 服务来保存必要的数据,上述策略是否相关/可行?换句话说,我不确定如何恢复/提交标记为@Transactional 的任何内容,因为事务管理器、边界等都在后台进行了处理。

这甚至是一个问题吗?如果是这样,实现这一战略的最佳方式是什么?手动跟踪事务(跨方法和回调听起来很可怕)?

还是我应该在分区撤销时通过 TopicPartition 集合并无论如何更新分区偏移量?

希望这是有道理的,因为我想确保我做对了。

提前致谢。

标签: springapache-kafkatransactionsspring-kafka

解决方案


2017 年 9 月发布

那本书用卡夫卡的术语来说已经很老了。现代版本;将偏移量保存在 Kafka 中要简单得多;只需确保您的消费者可以处理poll()内部返回的所有记录max.poll.interval.ms,以避免完全重新平衡。


推荐阅读