重新平衡时是否调用 ConsumerSeekAware 接口(interface)、onPartitionsAssigned 方法。因为我想在初始化和重新平衡时寻找偏移量中的特定偏移量。我可以将 consumerSeekAware 用于这两个目的,还是应该将 ConsumerRebalanceListener 用于重新平衡目的。请给出简单的答案,因为我对 spring kafka 还没有深入的了解。如果可以,请提供示例代码。谢谢
最佳答案
ConsumerSeekAware
有这个方法:
/**
* When using group management, called when partition assignments change.
* @param assignments the new assignments and their current offsets.
* @param callback the callback to perform an initial seek after assignment.
*/
void onPartitionsAssigned(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback);
它是从
KafkaMessageListenerContainer.seekPartitions(Collection<TopicPartition> partitions, boolean idle)
调用的。 ,而这又来自 ConsumerRebalanceListener.onPartitionsAssigned()
内部实现。最后一个有这个JavaDocs: * A callback method the user can implement to provide handling of customized offsets on completion of a successful
* partition re-assignment. This method will be called after an offset re-assignment completes and before the
* consumer starts fetching data.
所以,是的,
ConsumerSeekAware.onPartitionsAssigned()
在重新平衡期间总是调用。顺便说一句,Apache Kafka 没有像 initializing
这样的状态。 .总是 rebalancing
- 代理处于等待状态,并在有新消费者加入时开始重新平衡。
关于spring-boot - Spring kafka,ConsumerSeekAware接口(interface),再平衡时是否调用onPartitionsAssigned方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48981743/