大数据全系列 教程
1869个小节阅读:467.6k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
拦截器(Interceptor)是kafka0.10.0.0版本中引入的新功能,主要用于实现clients端的定制化控制逻辑。它可以使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时允许指定多个Interceptor按序作用于同一条消息从而形成一个拦截器链(Interceptor Chain)。
自定义拦截器需要实现org.apache.kafka.clients.producer.ProducerInterceptor接口。
xxxxxxxxxx
//做一些初始化的工作。
void configure(Map<String, ?> configs);
/*它运行在用户的main线程中,producer确保在消息被序列化以计算分区前调用该方法。用户可以在该方法中对消息做任何操作,但最好不要修改消息所属的topic和分区,否则会影响目标分区的计算。*/
ProducerRecord<K, V> onSend(ProducerRecord<K, V> record);
/*该方法会在消息被应答之前或消息发送失败时调用,并且通常都是在回调逻辑触发之前。该方法运行在producer的I/O线程中,因此不要在该方法中放入很“重”的逻辑,否则会拖慢producer的消息发送效率。*/
void onAcknowledgement(RecordMetadata metadata, Exception exception);
//主要用于执行一些资源清理的工作。
void close();