Java 卡夫卡消费者是否默认批量大小?

Java 卡夫卡消费者是否默认批量大小?,java,apache-kafka,Java,Apache Kafka,Kafka是否提供从主题读取消息的默认批量大小?我有以下代码,用于读取某个主题的消息 while (true) { final ConsumerRecords<String, User> consumerRecords = consumer.poll(500)); if (consumerRecords.count() == 0) { noRecordsCount++;

Kafka是否提供从主题读取消息的默认批量大小?我有以下代码,用于读取某个主题的消息

  while (true) {
        final ConsumerRecords<String, User> consumerRecords =
                consumer.poll(500));
        if (consumerRecords.count() == 0) {
            noRecordsCount++;
            if (noRecordsCount > giveUp) break;
            else continue;
        }
        consumerRecords.forEach(record -> {
            User user = record.value();
            userArray.add(user);
        });

        insertInBatch(user)
        consumer.commitAsync();
    }
    consumer.close();

是的,存在默认的
max.poll.records


但是,如果要插入数据库,最好使用Kafka Connect,而不是编写一个显然没有错误处理的使用者(尚未?)

注意,
max.poll.records
仅应用于使用者端。在封面下,从代理获取的批大小由
max.partition.fetch.bytes
fetch.min.bytes
fetch.max.bytes
控制。我绝对不推荐使用Connect JDBC接收器。它需要一个模式,它可以是Avro,也可以是每条消息上的模式(bloat!)。不支持.properties文件中的架构。也不支持从键中提取列。还有很多其他问题。我会在Kafka Spring中使用批处理侦听器。工作很好,所有的问题都解决了。@Sledge和您使用的数据格式?Java序列化程序?JSON?Avro并没有那个么臃肿,每个消息上都有一个数字,而不是一个完整的模式。。。SMT允许从键中拉出列。听起来你好像还没有完全了解连接API@cricket_007既然您提到了通过Kafka Connect向DB写入数据,我想您指的是JDBC接收器连接器,不是吗?这需要一个模式。可以使用json serdes w/schema为每条消息启用,也可以使用重量较轻的Avro。JDBC接收器也有一个限制,它只允许您从PK的密钥中提取(这防止了重复)。在我的例子中,我希望键作为列,而不是PK。是的,我可能还可以用另一个SMT做一些事情。或者只使用批处理已完成90%的批处理侦听器。
Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    props.put("group.id", "test");
    props.put("auto.commit.enable", "false");
    props.put("auto.offset.reset", "earliest");

    props.put("key.serializer",StringSerializer.class.getName());
    props.put("value.serializer",KafkaAvroDeserializer.class.getName());
    props.put("schema.registry","http://localhost:8081");