def main(args: Array[String]): Unit = {
val props = new Properties()
props.setProperty("bootstrap.servers", "linux01:9092,linux02:9092,linux03:9092")
props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
props.setProperty("value.deserializer",classOf[StringDeserializer].getName)
props.setProperty("auto.offset.reset","earliest")
props.setProperty("group.id","testGroup1")
val consumer: KafkaConsumer[String, String] = new KafkaConsumer[String, String](props)
val partition1 = new TopicPartition("test_topic", 1)
val partition2 = new TopicPartition("test_topic", 2)
consumer.assign(util.Arrays.asList(partition1,partition2))
val offset = 0 //起始消费偏移量
import scala.collection.JavaConversions._
for (partition <- consumer.assignment) {
consumer.seek(partition, offset)
}
while (true){
val msgs: ConsumerRecords[String, String] = consumer.poll(2000)
import scala.collection.JavaConverters._
for(cr <- msgs.asScala){
println(cr)
}
}
}
关键API:
1,consumer.assign 指定要消费的分区
2,consumer.seek 指定偏移量