Spring kafka ,是否有 ConsumerSeekAware 接口,重新平衡时调用 onPartitionsAssigned 方法

Shi*_*mal 6 spring-boot spring-kafka

是否ConsumerSeekAware接口,重新平衡时调用onPartitionsAssigned方法。因为我想寻找初始化和重新平衡时偏移中的特定偏移。我可以将 ConsumerSeekAware 用于这两个目的吗,还是应该使用 ConsumerRebalanceListener 来实现重新平衡目的。请给出简单的答案,因为我对 spring kafka 还没有深入的了解。如果可以的话请提供示例代码。谢谢

Art*_*lan 3

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);
Run Code Online (Sandbox Code Playgroud)

它是从 调用的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.
Run Code Online (Sandbox Code Playgroud)

所以,是的,ConsumerSeekAware.onPartitionsAssigned()在重新平衡期间总是被调用。顺便说一下,Apache Kafka 没有这样的状态initializing。它总是rebalancing- 代理处于等待状态,并在新消费者加入时开始重新平衡。