Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 卡夫卡设置了从主题中读取的最大消息数_Java_Memory_Apache Kafka_Kafka Consumer Api - Fatal编程技术网

Java 卡夫卡设置了从主题中读取的最大消息数

Java 卡夫卡设置了从主题中读取的最大消息数,java,memory,apache-kafka,kafka-consumer-api,Java,Memory,Apache Kafka,Kafka Consumer Api,我对ApacheKafka还不熟悉,我正在探索SimpleConsumer来阅读主题中的消息 我使用下面的代码来做同样的事情 FetchRequestBuilder builder = new FetchRequestBuilder(); FetchRequest fetchRequest = builder.addFetch(topic, partitionId, offset, 1024).build(); FetchResponse fetchResponse; try { fe

我对ApacheKafka还不熟悉,我正在探索SimpleConsumer来阅读主题中的消息

我使用下面的代码来做同样的事情

FetchRequestBuilder builder = new FetchRequestBuilder();
FetchRequest fetchRequest = builder.addFetch(topic, partitionId, offset, 1024).build();
FetchResponse fetchResponse;
try {
     fetchResponse = consumer.fetch(fetchRequest);
 } catch (Exception e) {}
这将读取特定分区中的所有可用消息;我想设置要读取的最大邮件数。在现阶段有没有办法做到这一点?当队列中有大量消息时,我不希望所有消息都登录到JVM堆中

另一个问题,

以下代码返回ByteBufferMessageSet

fetchResponse.messageSet(topic, partitionId);

这是否意味着,并非所有可用的消息都实际进入内存?

虽然不能限制消息的数量,但可以限制每个请求的每个主题分区接收的字节数。但是,这应该作为配置设置而不是消费者实现代码的一部分来完成。假设您可以指定最大字节数,读取为
socket.receive.buffer.bytes
。这将使您能够更细粒度地控制Kafka消息在JVM堆中占用的确切空间。请注意,此值必须等于或大于代理上的最大消息大小,否则生产者可能会发送太大而无法使用的消息

max.poll.records
对poll()的单个调用中返回的最大记录数。