2016-08-10 27 views
0

我已經通過以下基本kafka生產者文檔實施了一個有kafka生產者的日誌appender。我的配置如下所示,我使用KafkaProducer並使用send()將每個日誌發送到kafka。在我的情況下,我不能使用KafkaAppender,因爲我們不支持slf4j或log4j。使用kafka生產者作爲日誌appender

如何對這些日誌進行批處理,以及如何優化以下配置以處理大量日誌。

Properties props = new Properties(); 
    props.put("bootstrap.servers", "ip:9092"); 
    props.put("acks", "all"); 
    props.put("retries", 0); 
    props.put("batch.size", 16384); 
    props.put("linger.ms", 1); 
    props.put("buffer.memory", 33554432); 
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 

回答

2

增加linger.ms配置。這個配置意味着「即使該批次尚未滿時,在超時後發送消息」。在你的情況下,你的生產者每毫秒刷新一次數據,這就是爲什麼你沒有注意到任何「批處理」。