卡夫卡消费者无法产生产出

时间:2018-03-27 03:49:48

标签: apache-kafka kafka-consumer-api

我在scala中写过kafka使用者。当我运行消费者时,它在控制台上显示为空白。 我使用下面的代码:

  val topicProducer = "testOutput"

  val props = new Properties()
  props.put("bootstrap.servers","host:9092,host:9092")
  props.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer")
  props.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer")
  props.put("group.id", "test");

  val kafkaConsumer = new KafkaConsumer[String, String](props)
  val topic  = Array("test").toList
  kafkaConsumer.subscribe(topic)
  val results = kafkaConsumer.poll(2000)
  for ((record) <- results) {
    producer.send(new ProducerRecord(topicProducer,"key","Value="+record.key()+" Record Key="+record.value()+"append"))
  }

1 个答案:

答案 0 :(得分:0)

您还需要指定auto.offset.reset属性,以便您的使用者能够从头开始使用消息(相当于命令行中的--from-beginning

props.put("auto.offset.reset", "earliest");

根据Kafka docs

<强> auto.offset.reset

  

当ZooKeeper中没有初始偏移量或者是否存在时,该怎么办?   偏移量超出范围:

     
      
  • 最小:自动将偏移重置为最小偏移量
  •   
  • 最大:自动将偏移重置为最大偏移量
  •   
  • 其他任何事情:向消费者抛出异常
  •   

修改

或者,如果您使用旧的使用者API,则使用zookeeper参数bootstrap-server host:9092代替--zookeeper host:2181

如果这不能解决问题,请尝试删除zookeeper中的/brokers

bin/zookeeper-shell <zk-host>:2181

并重新启动kafka节点

rmr /brokers