自上次追加以来,Kafka制作人发送的消息到期时间为30003毫秒

时间:2017-02-13 03:44:46

标签: apache-kafka producer

我正在使用Kafka 0.10.1.1并编写测试生产者,但我在producer.send onCompletion回调中收到错误:

        producer.send(record, new Callback() {
        @Override
        public void onCompletion(RecordMetadata metadata, Exception e) {
            if (e != null){
                System.out.println(e.getMessage());
            }
        }
    });

使用配置生成器:timeout.ms=30000, linger.ms=5, batch.size=1000

收到以下错误消息:

  

由于30004毫秒已经过去,因此testtopic-2的1条记录已过期   最后追加

但有时会出现此错误消息。生产者有时可以很好地工作。

2 个答案:

答案 0 :(得分:0)

说一个话题有100个分区(0-99)。 Kafka使您可以通过指定特定分区来生成主题的记录。面对我试图对大于99的分区进行分区的问题,因为经纪人拒绝了这些记录。

您的主题(testtopic)很有可能少于3个分区,而您试图将其划分为testtopic-2。

答案 1 :(得分:-3)

创建消费者时,请将ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG设置为true
这样可以解决问题。