Kafka Compaction主题

时间:2017-06-27 11:03:17

标签: 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条消息。当我使用这些消息时,我会分别收到每条消息而不是一条压缩消息。

1 个答案:

答案 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());
                    }
                }
            }
        }