卡夫卡消费者不消费

时间:2016-06-29 23:20:44

标签: java scala apache-kafka kafka-consumer-api

这是我从java客户端构建kafka使用者的代码。

  def buildConsumer[Key, Value](
    configuration: KafkaConfiguration, commitInterval: Long, groupId: Option[String] = None)(
    implicit keyDeserializer: Deserializer[Key], valueDeserializer: Deserializer[Value]
  ): KafkaJavaConsumer[Key, Value] = {
    val settingsMap: Map[String, Object] = Map(
      "bootstrap.servers" -> s"${configuration.bootstrapHost}:${configuration.bootstrapPort}",
      "group.id" -> groupId.getOrElse(s"${configuration.topic}-${UUID.randomUUID}"),
      "enable.auto.commit" -> "true",
      "auto.commit.interval.ms" -> commitInterval.toString,
      "auto.offset.reset" -> "earliest"
    ) ++ configuration.additionalOptions.getOrElse(Map.empty[String, Object])
    val consumer = new KafkaJavaConsumer[Key, Value](settingsMap.asJava, keyDeserializer, valueDeserializer)
    consumer.subscribe(Seq(configuration.topic).asJava)
    consumer
  }

我的kafka正在6050端口上运行,我已经在控制台中对其进行了测试,以便从该特定端口生成和使用它。我想知道我的问题是否与我上面的配置有关。我还使用EmbeddedKafka框架测试了上面的代码,问题似乎是在运行实际的kafka服务器。

编辑:

我忘了补充一点,我有多个消费者(不同的group.id)消费来自同一个经纪人,不知道这是不是问题。

2 个答案:

答案 0 :(得分:1)

确保,

  

没有。主题中的分区> =中的消费者实例数   组

否则,组中的某些消费者实例将不会被分配任何分区。

要检查分区数,请使用kafka-topics.sh命令

> sh kafka-topics.sh --zookeeper localhost:2181 --topic test --describe Topic:test PartitionCount:6 ReplicationFactor:1 Configs: Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0 Topic: test Partition: 1 Leader: 0 Replicas: 0 Isr: 0 Topic: test Partition: 2 Leader: 0 Replicas: 0 Isr: 0 Topic: test Partition: 3 Leader: 0 Replicas: 0 Isr: 0 Topic: test Partition: 4 Leader: 0 Replicas: 0 Isr: 0 Topic: test Partition: 5 Leader: 0 Replicas: 0 Isr: 0

答案 1 :(得分:0)

我仍然不确定问题是什么,但通过删除zookeeper数据文件夹和所有kafka日志,消费者/生产者开始按预期工作。我认为这可能与我删除日志文件以清除主题而不使用正式的kafka管理工具删除主题的问题有关。

相关问题