我使用下面的代码写入到卡夫卡:卡夫卡压缩可以用相同的分区密钥覆盖消息吗?
String partitionKey = "" + System.currentTimeMillis();
KeyedMessage<String, String> data = new KeyedMessage<String, String>(topic, partitionKey, payload);
而且我们使用0.8.1.1版本卡夫卡的。
是否有可能的是,当多个线程编写,他们中的一些(不同的有效载荷)用相同的分区键和写,因为卡夫卡覆盖这些消息(由于同一partitionKey)?
这让我们在这个方向思考的文档是: http://kafka.apache.org/documentation.html#compaction
谢谢格温。但是你的回答看起来更像是一个应该如何而不是确认的建议。 我的问题更多的是关于数据没有达到消费者,因为压实。日志压缩与消息传递不同吗?日志是否可能被压缩,但客户端仍然获得具有相同密钥的所有消息? 如果此功能仅在8.1 *版本中引入,则此更改是否与先前版本不兼容? – user2250246 2014-11-03 03:39:26
1.日志压缩与消息传递不同。无论是否有人正在使用消息,压缩都发生在服务器中。 – 2014-11-03 23:10:15
2.如果客户在写完信息后立即读取消息,它将在压缩之前完成,他们将获得所有消息。 – 2014-11-03 23:11:45