Kafka Producer拦截器(Interceptor)

简介: Kafka Producer拦截器(Interceptor)

Kafka拦截器一共有两种:

  • Producer端
  • Consumer端


本篇主要讲述的是Kafka Producer端的拦截器,它主要用来对消息进行拦截或者修改,也可以用于Producer的Callback回调之前进行相应的预处理。


使用Kafka Producer端的拦截器非常简单,主要是实现ProducerInterceptor接口,此接口包含4个方法:


ProducerRecord<K, V> onSend(ProducerRecord<K, V> record)

Producer在将消息序列化和分配分区之前会调用拦截器的这个方法来对消息进行相应的操作。一般来说最好不要修改消息ProducerRecord的topic、key以及partition等信息,如果要修改,也需确保对其有准确的判断,否则会与预想的效果出现偏差。比如修改key不仅会影响分区的计算,同样也会影响Broker端日志压缩(Log Compaction)的功能。


void onAcknowledgement(RecordMetadata metadata, Exception exception)

在消息被应答(Acknowledgement)之前或者消息发送失败时调用,优先于用户设定的Callback之前执行。这个方法运行在Producer的IO线程中,所以这个方法里实现的代码逻辑越简单越好,否则会影响消息的发送速率。


void close()

关闭当前的拦截器,此方法主要用于执行一些资源的清理工作。


configure(Map<String, ?> configs)

用来初始化此类的方法,这个是ProducerInterceptor接口的父接口Configurable中的方法。


一般情况下只需要关注并实现onSend或onAcknowledgement方法即可。


示例

  • onSend统计发送的消息个数

image.png


通过onAcknowledgement统计发送消息的成功次数


image.png

目录
相关文章
|
1月前
|
消息中间件 监控 Java
Kafka Producer异步发送消息技巧大揭秘
Kafka Producer异步发送消息技巧大揭秘
68 0
|
8月前
|
消息中间件 缓存 Kafka
连Producer端的主线程模块运行原理都不清楚,就敢说自己精通Kafka?
连Producer端的主线程模块运行原理都不清楚,就敢说自己精通Kafka?
34 0
|
1月前
|
消息中间件 运维 监控
揭秘Kafka拦截器的神奇操作
揭秘Kafka拦截器的神奇操作
23 0
|
4月前
|
消息中间件 Kafka
Kafka - 3.x Producer 生产者最佳实践
Kafka - 3.x Producer 生产者最佳实践
67 0
|
5月前
|
消息中间件 缓存 Kafka
kafka源码解析——第一篇:producer
kafka源码解析——第一篇:producer
42 0
|
5月前
|
消息中间件 Kafka Apache
Kafka 架构深度解析:生产者(Producer)和消费者(Consumer)
Apache Kafka 作为分布式流处理平台,其架构中的生产者和消费者是核心组件,负责实现高效的消息生产和消费。本文将深入剖析 Kafka 架构中生产者和消费者的工作原理、核心概念以及高级功能。
|
8月前
|
消息中间件 缓存 Java
聊聊 Kafka: Producer 的网络模型
聊聊 Kafka: Producer 的网络模型
|
8月前
|
消息中间件 缓存 Java
聊聊 Kafka:Producer Metadata 读取与更新机制
聊聊 Kafka:Producer Metadata 读取与更新机制
109 0
|
8月前
|
消息中间件 缓存 算法
聊聊 Kafka:Producer 源码解析
聊聊 Kafka:Producer 源码解析
138 0
|
9月前
|
消息中间件 存储 安全
谈谈 Kafka 的幂等性 Producer
使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付。消息交付的可靠性保障,有以下三种承诺:最多一次、至少一次和精确一次。
62 0

热门文章

最新文章