Spring Kafka 和 Re-balancing 在处理中

Spring Kafka and Re-balancing in the Middle of Processing

在这个 link https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html 标题为 "Consuming Records with Specific Offsets" 的部分中,引用了一种有效更新外部存储中的主题分区偏移量的策略 "as you go",然后在分区撤销时(例如 re-balancing),只需将任何中断的事务提交到外部存储即可。

现在,我假设此策略意味着在分区撤销回调中我不需要处理 passed-in TopicPartition collection 作为任何偏移量 "in progress" 被中断的事务将被持久化,并将包含需要 committed/saved.

的分区偏移量

(如有错误,请指正。)

那么,假设这是 Spring Kafka,我正在使用 @Transactional 服务来保存必要的数据,那么上述策略是 relevant/doable 吗?换句话说,我不确定我如何 resume/commit 任何标记为 @Transactional 的东西,因为事务管理器、边界等都在后台处理。

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

或者我是否应该在分区撤销时通过 TopicPartition collection 并更新分区偏移量?

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

提前致谢。

Released September 2017

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