kafka消息分区原理import kafka.producer.Partitioner; import
kafka.utils.VerifiableProperties; public class JasonPartitioner<T> implements
Partitioner { public JasonPartitioner(VerifiableProperties
verifiableProperties) {} @Override public int partition(Object key, int
numPartitions) { try { int partitionNum = Integer.parseInt((String) key);
return Math.abs(Integer.parseInt((String) key) % numPartitions); } catch
(Exception e) { return Math.abs(key.hashCode() % numPartitions); } } }
kafka的分区是根据消息发布的key,对分区数求余数得来


一般在kafka消息消费需要保证排序的,有两种方式,一种是创建消息topic时候,只创建一个分区,还有一种是,发布消息的时候把消息分成类型,把类型作为发布的key

比如一般我们在使用canal做mysql从库,消息发布的时候,相同的表名的数据,可以作为发布的key,这样消费者在拿到数据时候,不会再同步数据到es时产生错误

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信