java - Kafka 附加分区键或没有键的分区器

标签 java apache-kafka kafka-producer-api

我是 Kafka 新手,遇到一些问题。 我知道我们可以使用自己的分区逻辑来实现 Partitioner 类,该逻辑根据消息键返回特定的分区。我们还可以设置日志压缩策略,仅存储具有相同 key 的最新版本的消息。 但我需要有不同的键来执行此操作的消息。例如,我们有具有 id 和地址(city_id)的实体。我想根据 city_id 选择分区,并仅存储具有相同 id 的人的最新信息。有什么办法可以解决这个问题吗? 抱歉我的英语不好,我真的很想学习 Kafka。

最佳答案

同一个城市的所有消息都必须发送到同一个分区吗?如果是,为什么?您能介绍一下您的用例吗?

如果没有,您可以在哈希计算中同时包含 city_idperson_id。这样,压缩应该删除除最新个人消息之外的所有内容(前提是您具有从个人到城市的 1 对 1 映射,这在模式中通常是正确的)?

关于java - Kafka 附加分区键或没有键的分区器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542583/

相关文章:

java - 如果某些 Kafka 节点时间偏移不同步,Spark 流作业会卡住

java - boolean 帮助 : Testing the parameters for a password JAVA

ssl - 通过 TLS 将 Kafka 生产者/消费者连接到代理

java - Graphite/Carbon 如何获取每秒指标

java - Logstash kafka 输入插件无法通过新消费者读取任何消息,并且无法将 auto_offset_reset 设置为最早

apache-kafka - kafka-topics.sh ---delete --topic '' testTopic'' 不适用于 kafka V 0.10.1

apache-kafka - 如何在kafka中找到所有更正的索引文件

java - org.apache.kafka.common.errors.UnknownTopicOrPartitionException : This server does not host this topic-partition 错误

java - 迭代某个范围内的 Java Map

java - 如何打开使用 'ip tuntap' 创建的 tun 设备