我可以在命令行上针对Kafka位置安装发送和接收消息。我也可以通过Java代码发送消息。这些消息显示在Kafka命令提示符中。我还有一个Kafka消费者的Java代码。该代码昨天收到了消息。但是,它今天早上没有收到任何消息。代码没有改变。我想知道属性配置是不是很正确,也不是。这是我的配置:
制片人:
<select>
并将ProducerRecord设置为
bootstrap.servers - localhost:9092
group.id - test
key.serializer - StringSerializer.class.getName()
value.serializer - StringSerializer.class.getName()
消费者:
ProducerRecord<String, String>("test", "mykey", "myvalue")
和Java代码:
zookeeper.connect - "localhost:2181"
group.id - "test"
zookeeper.session.timeout.ms - 500
zookeeper.sync.time.ms - 250
auto.commit.interval.ms - 1000
key.deserializer - org.apache.kafka.common.serialization.StringDeserializer
value.deserializer - org.apache.kafka.common.serialization.StringDeserializer
缺少什么?
答案 0 :(得分:0)
可能会发生很多事情。
首先,您的消费者的ZooKeeper会话超时非常低,这意味着消费者可能会遇到许多&#34;软故障&#34;由于垃圾收集暂停。当发生这种情况时,消费者组将重新平衡,这可以暂停消费。如果这种情况经常发生,消费者可能会进入一种从不消费消息的状态,因为它不断被重新平衡。我建议将ZooKeeper会话超时增加到30秒,看看是否可以解决问题。如果是这样,您可以尝试将其设置得更低。
其次,您能否确认正在生成新消息&#34; test&#34;话题?您的消费者只会使用尚未提交的新消息。该主题可能没有任何新消息。
第三,您是否在同一个消费者群体中有其他消费者可以处理消息?如果一个消费者经常遇到软故障,其他消费者将被分配其分区。
最后,您正在使用&#34; old&#34;将最终被删除的消费者。如果可能的话,我建议转到新的&#34;消费者(KafkaConsumer.java)在Kafka 0.9中提供。虽然我无法承诺这会解决您的问题。
希望这有帮助。