Spring boot KafkaConsumer未轮询所有消息

Spring boot KafkaConsumer未轮询所有消息,spring-boot,spring-cloud-stream,spring-cloud-stream-binder-kafka,Spring Boot,Spring Cloud Stream,Spring Cloud Stream Binder Kafka,我有一个类似于下面的代码: KafkaConsumer<Long, String> kafkaConsumer = new KafkaConsumer<>(properties); partitions = Collections.singletonList(new TopicPartition(topic, partition)); kafkaConsumer.assign(partitions); kafkaConsumer.seekToBeginning(List.

我有一个类似于下面的代码:

KafkaConsumer<Long, String> kafkaConsumer = new KafkaConsumer<>(properties);
partitions = Collections.singletonList(new TopicPartition(topic, partition));
kafkaConsumer.assign(partitions);
kafkaConsumer.seekToBeginning(List.of(partition));

ConsumerRecords<Long, String> records = kafkaConsumer.poll(Duration.ofMillis(pollDuration));
KafkaConsumer KafkaConsumer=新的KafkaConsumer(属性);
partitions=Collections.singletonList(新的TopicPartition(topic,partition));
卡夫卡消费分配(分区);
卡夫卡康苏美尔·希克托贝金宁(划分列表);
ConsumerRecords records=kafkaConsumer.poll(持续时间:百万分之一(pollDuration));
在运行代码时,我无法获取此特定主题中的所有消息。 例如,如果我在这个分区中有24条记录,我只能得到20条记录

这个问题并不总是发生。当我们在运行应用程序的同一台机器上使用docker启动Kafka(wurstmeister/Kafka:1.1.0)时,我能够从该特定分区获取所有记录


但是,当我让同一个docker在另一台机器上组装并连接到它时,就会出现这个问题。

尝试增加
fetch.min.bytes
,也可能是
fetch.max.wait.ms

fetch.min.bytes
服务器应为获取请求返回的最小数据量。如果没有足够的可用数据,请求将在响应请求之前等待积累足够的数据。默认设置为1字节意味着,只要有一个字节的数据可用,或在等待数据到达时,提取请求超时,就会响应提取请求。将该值设置为大于1的值将导致服务器等待积累更多的数据,这会稍微提高服务器吞吐量,但会增加一些延迟

fetch.max.wait.ms
如果没有足够的数据立即满足fetch.min.bytes给出的要求,则服务器在响应提取请求之前将阻止的最长时间


我尝试设置上述值,然后在主题中添加了几条消息。但两天后,当我检查时,问题仍然存在。请注意,我正在使用日志保留和偏移量保留的默认值
>问题仍然存在
什么“问题”?不能保证在轮询时返回主题/分区中的所有记录。你需要继续投票。很抱歉回复晚了。但是你的意思是说,在我们从主题中获得所有信息之前,保持循环轮询是可以的吗?