我使用kafka-topics.bat --zookeeper localhost:2181 --alter --topic test --config cleanup.policy=compact delete config min.cleanable.dirty.ratio=0.01 --config segment.ms=100 --config delete.retention.ms=100
来压缩我的主题。
我已经使用相同的密钥发送了2000条消息。当我使用这些消息时,我会分别收到每条消息而不是一条压缩消息。
答案 0 :(得分:1)
您所指的压缩设置与使用Kafka客户端消息的方式无关。请查看official documentation here以获取更多详细信息。
如果您想控制客户端消费消息的方式,您必须使用client config properties配置客户端。
考虑一种情况,即您将主题汇集300毫秒并收到一组消息(ConsumerRecords),然后您可以迭代这些消息以独立处理每条消息。
while(true) {
ConsumerRecords<String, JsonNode> records = kafkaConsumer.poll(300);
if(records.count() > 0) {
for(ConsumerRecord<String, JsonNode> record: records) {
if(counter % 500 == 0) {
log.info("Record recovered, groupId: {}, topicName: {}, key: {}, value: {} , offset: {}",
this.groupId, this.topicNames, record.key(), record.value(), record.offset());
}
}
}
}