Jus*_*ony 12 apache-kafka rebalancing
我正在阅读Kafka:The Definitive Guide,并希望更好地理解重新平衡监听器.本书中的示例简单地使用a HashMap来维护已处理的当前偏移量,并在撤销分区时提交当前状态.我担心的是:
我在代码示例中有两个问题/问题:
我重新阅读了本书中的内容,我也感到有些困惑!
该Javadoc中指出:
每当分区分配更改时,此回调将仅作为poll(long)调用的一部分在用户线程中执行。
我看了一下代码,确认再平衡监听器方法确实在拥有使用者的同一线程中被调用。
是的commitSync(),在重新平衡监听器中提交时应该使用。
为了解释原因,让我们看一下黄金路径示例。我们从一个愉快地消费并定期向协调员心跳的消费者开始。协调器有时会REBALANCE_IN_PROGRESS向心跳请求返回错误。这可能是由于新成员想要加入组,成员离开或心跳失败或正在从订阅中添加/删除新分区引起的。此时,所有消费者都需要重新加入该组。
尝试重新加入该组之前,使用者将同步执行 ConsumerRebalanceListener.onPartitionsRevoked()。侦听器返回后,消费者将向该协调器发送一个JoinRequest以重新加入该组。
就是说,我想这就是您的想法,如果您的回调花费太长时间(> session.timeout.ms)提交,则该组可能已经存在于另一代中,并且尝试将具有偏移量的分区分配给另一个成员。在这种情况下,即使提交是同步的,提交也将失败。但是通过commitSync()在侦听器中使用,可以确保使用者在完成提交之前不会重新加入该组。
| 归档时间: |
|
| 查看次数: |
1189 次 |
| 最近记录: |