KafkaBindingRebalanceListener

应用程序可能希望在分区初次分配时将主题/分区定位到任意偏移量,或者对消费者执行其他操作。从 2.1 版本开始,如果您在应用程序上下文中提供一个 KafkaBindingRebalanceListener bean,它将被连接到所有 Kafka 消费者绑定。

public interface KafkaBindingRebalanceListener {

	/**
	 * 在任何待处理的偏移量提交之前由容器调用。
	 * @param bindingName 绑定的名称。
	 * @param consumer 消费者。
	 * @param partitions 分区。
	 */
	default void onPartitionsRevokedBeforeCommit(String bindingName, Consumer<?, ?> consumer,
			Collection<TopicPartition> partitions) {

	}

	/**
	 * 在任何待处理的偏移量提交之后由容器调用。
	 * @param bindingName 绑定的名称。
	 * @param consumer 消费者。
	 * @param partitions 分区。
	 */
	default void onPartitionsRevokedAfterCommit(String bindingName, Consumer<?, ?> consumer, Collection<TopicPartition> partitions) {

	}

	/**
	 * 在分区初次分配或重新平衡后调用。
	 * 应用程序可能只想在初次分配时执行查找操作。
	 * @param bindingName 绑定的名称。
	 * @param consumer 消费者。
	 * @param partitions 分区。
	 * @param initial 如果这是初次分配,则为 true。
	 */
	default void onPartitionsAssigned(String bindingName, Consumer<?, ?> consumer, Collection<TopicPartition> partitions,
			boolean initial) {

	}

}

当您提供一个重新平衡监听器时,不能将 resetOffsets 消费者属性设置为 true