我是 Kafka 新手,遇到一些问题。 我知道我们可以使用自己的分区逻辑来实现 Partitioner 类,该逻辑根据消息键返回特定的分区。我们还可以设置日志压缩策略,仅存储具有相同 key 的最新版本的消息。 但我需要有不同的键来执行此操作的消息。例如,我们有具有 id 和地址(city_id)的实体。我想根据 city_id 选择分区,并仅存储具有相同 id 的人的最新信息。有什么办法可以解决这个问题吗? 抱歉我的英语不好,我真的很想学习 Kafka。
最佳答案
同一个城市的所有消息都必须发送到同一个分区吗?如果是,为什么?您能介绍一下您的用例吗?
如果没有,您可以在哈希计算中同时包含 city_id
和 person_id
。这样,压缩应该删除除最新个人消息之外的所有内容(前提是您具有从个人到城市的 1 对 1 映射,这在模式中通常是正确的)?
关于java - Kafka 附加分区键或没有键的分区器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542583/