你上世纪写的代码现在还work吗?
息是写入成功的。ack 中有三种类型(String)的值
使用」: properties.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, MyPartitioner.class.getName()); 自定义分区器使用起来也简单,只需要实现 Partitioner 接口 拦截器来了? 做 web 开发的同学相信对拦截器一点也不陌生,在 Kafka 中也具有拦截器的功能,拦截器又分为「生产者拦截器」和「消费者拦截器」 生产者拦截器可以在消息发送前做一些准备工作,比如按照某个规则过滤不符合要求的消息,修改消息的内容等,也可以用来在发送回调逻辑前做一些定制化的需求。
那么有需要就会有自定义,在自定义拦截器的时候我们只需要实现ProducerInterceptor接口即可: 述是 kafka 中的Partitioner 接口,可以看到里面有个方法partition()是用来计算分区号,返回 int 类型的值,其中六个参数分别代表:
在partition()方法中定义了主要的分区分配逻辑,如果 key 不为空时,那么默认的分区器会对 key 进行haxi(采用MurmurHash2算法),最终根据得到的哈希值来计算分区号,拥有相同 key 的消息会被写入同一个分区,如果 key 为空,那么消息将会以轮询的方式发往主题内的各个可用分区。 「如果 key 不为 null,那么计算得到的分区号会是所有分区中的任意一个,如果 key 为 空 ,那么计算得到的分区号仅为可用分区中的任意一个」 当然,分区器也是可以自定义的,操作如下:
「MyPartitioner.class」: (编辑:衡水站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |