Apache kafka 卡夫卡主题压缩
我使用了Apache kafka 卡夫卡主题压缩,apache-kafka,Apache Kafka,我使用了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封邮件。当我使用这些邮件时,我会分别收到每封邮件,而不是一
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封邮件。当我使用这些邮件时,我会分别收到每封邮件,而不是一封压缩邮件。您所指的压缩设置与您使用Kafka客户端的方式无关。有关更多详细信息,请查看 如果要控制客户端使用消息的方式,则必须使用配置客户端 考虑这样一种情况:您将主题合并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());
}
}
}
}
while(true){
消费者记录记录=kafkaConsumer.poll(300);
if(records.count()>0){
对于(消费者记录:记录){
如果(计数器%500==0){
log.info(“记录已恢复,组ID:{},主题名:{},键:{},值:{},偏移量:{}”,
this.groupId、this.topicNames、record.key()、record.value()、record.offset());
}
}
}
}
假设我们有这样的东西,key=value1 key=value2现在value2是key的更新值,我只想要更新值!!!如何配置Kafka以仅保留更新的值?您好,您不能仅保留最新信息,这不是Kafka的工作方式,它是一个仅附加的分布式日志,对于您提到的内容,您需要使用Kafka 0.10.1或0.10.0中引入的Kafka streams和Ktable或GlobalKTable,我记得目前还不确定。。。。你是怎么解决的?