scala中的kafka使用者

9njqaruj  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(307)

我正在尝试使用scala编写kafka消费代码。
我有一个kafka集群(服务器a),其中一些消息已经发布到主题(测试主题)中,我正在从另一个服务器(比如b)使用它,该服务器建立了从服务器b到a的连接(我使用Spark壳代码)。
下面是我试图在服务器b中执行的代码段,但在执行代码时出现了空指针异常。

import java.util._
import java.util.Properties
import org.apache.kafka.clients.consumer.KafkaConsumer
import org.apache.kafka.clients.consumer.ConsumerConfig
import scala.collection.JavaConverters._
import org.apache.kafka.common.TopicPartition
val  props = new Properties()
props.put("group.id","group-test")
props.put("auto.commit.interval.ms","1000")
props.put("auto.offset.reset","earliest")
props.put("bootstrap.servers", "<kafka server ip>:9092")
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
props.put("partition.assignment.strategy","org.apache.kafka.clients.consumer.RangeAssignor")
val consumer = new KafkaConsumer[String, String](props)
consumer.subscribe("test-topic")
 while(true){
   val records=consumer.poll(100)
   println(consumer)
   println(records)
   for (record<-records.asScala){
    println(record)
   }
 }

Error --
org.apache.kafka.clients.consumer.KafkaConsumer@29451e22
null
java.lang.NullPointerException
  at scala.collection.convert.Wrappers$JMapWrapperLike$$anon$2.<init>(Wrappers.scala:275)
  at scala.collection.convert.Wrappers$JMapWrapperLike$class.iterator(Wrappers.scala:274)
  at scala.collection.convert.Wrappers$JMapWrapper.iterator(Wrappers.scala:292)
  at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
  at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
  ... 59 elided

请帮忙解决这个问题。

nkhmeac6

nkhmeac61#

consumer.poll(100)返回null。
增加超时并测试if记录!=在循环它们之前为null。

相关问题