美文网首页
(9)拦截器、序列化器、分区器处理顺序

(9)拦截器、序列化器、分区器处理顺序

作者: hedgehog1112 | 来源:发表于2021-02-28 11:38 被阅读0次

生产者客户端:主线程和 Sender 线程

1、主线程:由 KafkaProducer 创建消息,通过拦截器、序列化器和分区器缓存到消息累加器(RecordAccumulator,也称消息收集器)中。

2、Sender 线程:从 RecordAccumulator 中获取消息,发送到 Kafka

概要:

一、拦截器:发送前准备:过滤、修改消息,发送回调前:统计

二、序列化器:对象转换成字节数组发送给 Kafka

三、分区器:根据 key 计算 partition

一、拦截器

1、作用发送前准备:过滤、修改消息,发送回调前:统计

2、实现 org.apache.kafka.clients.producer. ProducerInterceptor 接口,包含3个方法:

2、何时KafkaProducer调拦截器:

    1)序列化计算分区前拦截器 onSend() 修改(一般不修改topic、key 和 partition等)

    2)消息被应答前(Acknowledgement)或发送失败时调拦截器onAcknowledgement() ,优先于用户设定Callback前执行。

        ps:运行在 Producer I/O线程中,实现越简单越好,否则影响消息发送速度

    3)close() 关闭拦截器时清理

二、序列化器

1、作用:对象转换成字节数组发送给 Kafka。消费者反序列化器转成对象(对应序列化器)

2、实现org.apache.kafka.common.serialization.Serializer 接口,3个方法:配置、序列化、关闭

configure():创建 KafkaProducer 实例时调,确定编码类型

serialize:编解码,如几种序列化器都无法满足,可用 Avro、JSON、Thrift、ProtoBuf 和 Protostuff 等通用序列化工具或自定义

三、分区器

1、作用:根据 key 计算 partition。如果=指定partition 字段,不需分区器

2、实现:默认分区器是 org.apache.kafka.clients.producer.internals.DefaultPartitioner,实现 org.apache.kafka.clients.producer.Partitioner 接口,2个方法

3、partition() :哈希计算分区号参数:主题、键、序列化后键、值、序列化后值,集群元数据。默认分区器 DefaultPartitioner 中,key  null,轮询发往各个分区

4、close() :关闭分区器回收资源,空方法(默认分区器中)。

5、自定义分区器,实现某系列key都发到同一分区 有序消费,实现Partitioner 接口。

https://mp.weixin.qq.com/s/C6dfvzFkNDYgiNeZ4eWPBQ

相关文章

  • kafka编程应用

    Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么? 序列化器:生产者需要用序列化器(Ser...

  • (9)拦截器、序列化器、分区器处理顺序

    生产者客户端:主线程和 Sender 线程 1、主线程:由 KafkaProducer 创建消息,通过拦截器、序列...

  • Kafka分区策略

    1. 生产者分区选择配策略 生产者在将消息发送到某个Topic ,需要经过拦截器、序列化器和分区器(Partiti...

  • 拦截器

    拦截器执行过程: 总结的几条拦截器规则: 1.preHandle 预处理:根据拦截器定义的顺序,正向执行(最先执行...

  • 十六、拦截器实现的细节

    1. 拦截器细节 前置处理按拦截器列表的顺序执行; 后置处理按拦截器列表的逆序执行; 后置处理的异常需捕获后统一抛...

  • Kafka入门

    Kafka生产者消费者,拦截器,分区器,序列化以及反序列化器 直接上代码pom文件 发送消息的实体化数据 生产者,...

  • 【kafka 源码】kafka 生产者

    前文讲述了 kafka 实例化过程。实例化完成后,就可以发送消息体。消息体经过拦截器,序列化器,分区器到达消息累加...

  • Http请求前后监听-interceptor

    处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于...

  • Kafka生产者源码解析,学习总结

    目录 简单使用示例 kafka生产者总体架构 配置模块 拦截器模块 序列化模块 分区模块 RecordAccumu...

  • 白话Okhttp拦截器调用过程

    拦截器调用顺序一般为顺序调用,将上一个拦截器的返回作为下一个拦截器的输入,直到所有拦截器执行完毕,返回最终结果。这...

网友评论

      本文标题:(9)拦截器、序列化器、分区器处理顺序

      本文链接:https://www.haomeiwen.com/subject/rifgfltx.html