我可以从Kafka主题的特定分区读取吗

时间:2018-06-26 13:19:05

标签: apache-kafka spring-kafka

我正在使用spring-kafka框架来实现kafka侦听器。目前,我正在阅读一个主题。但是,根据一定的要求,我被要求提供一种实现侦听器的方法,该方法将从kafka主题的某些分区读取。

从不同的分区读取不同的应用程序是一个好习惯。能否请您提供有关如何通过spring-kafka和java实现此知识的帮助。

谢谢。

1 个答案:

答案 0 :(得分:2)

用于配置ContainerProperties的{​​{1}}具有以下ctor:

KafkaMessageListenerContainer

有关的地方:

public ContainerProperties(TopicPartitionInitialOffset... topicPartitions) {

因此,您可以通过这种方式指定从哪个主题分配哪个分区以及开始使用哪个偏移量。

当我们使用基于分区的配置时,我们最终在** * A configuration container to represent a topic name, partition number and, optionally, * an initial offset for it. The initial offset can be: * <ul> * <li>{@code null} - do nothing;</li> * <li>positive (including {@code 0}) - seek to EITHER the absolute offset within the * partition or an offset relative to the current position for this consumer, depending * on {@link #isRelativeToCurrent()}. * </li> * <li>negative - seek to EITHER the offset relative to the current last offset within * the partition: {@code consumer.seekToEnd() + initialOffset} OR the relative to the * current offset for this consumer (if any), depending on * {@link #isRelativeToCurrent()}.</li> * </ul> * Offsets are applied when the container is {@code start()}ed. * * @author Artem Bilan * @author Gary Russell */ public class TopicPartitionInitialOffset { 上使用了此功能:

KafkaConsumer

因此,这是直接从特定分区中使用的真正标准做法。