use*_*246 2 messaging apache-kafka
我使用以下代码写入Kafka:
String partitionKey = "" + System.currentTimeMillis();
KeyedMessage<String, String> data = new KeyedMessage<String, String>(topic, partitionKey, payload);
Run Code Online (Sandbox Code Playgroud)
我们使用的是Kafka的0.8.1.1版本.
有可能当多个线程正在写入时,其中一些(具有不同的有效负载)使用相同的分区键写入,因此Kafka会覆盖这些消息(由于相同的partitionKey)?
让我们朝这个方向思考的文档是:http: //kafka.apache.org/documentation.html#compaction
我在https://cwiki.apache.org/confluence/display/KAFKA/Log+Compaction找到了更多资料
突出点:
因此,无论我们是否进行日志压缩,Kafka都会删除较旧的记录,但日志记录中的记录是安全的.
仅当下游客户端无法长时间清空Kafka队列时(例如,每个主题大小/时间限制被命中),才会出现丢失记录问题.
这应该是我认为的预期行为,因为我们无法永远保存记录.它们必须在某个时间或其他时间被删除.