springboot2.x+kafka使用和源码分析七(消费者和生产者使用拦截器)

KafkaTemplate配置ProducerInterceptor|springboot整合kafka,配置自定义拦截器 springboot整合kafka,配置自定义拦截器 ,KafkaTemplate配置ProducerInterceptor 阅读详情

Apache Kafka提供了一种向生产者和消费者添加拦截器的机制,此拦截器由kafka进行管理和spring无关。所以无法使用Spring依赖注入功能。但是我们可以使用拦截器提供的config()方法来手动来获取这些bean依赖。

第一步:自定义拦截器:

/**
 * 自定义生产者拦截器
 * @author fangyuan
 */
public class PersonInfoProducerInterceptor implements ProducerInterceptor<Integer,String> {
    
    private SomeBean someBean;
    
    @Override
    public ProducerRecord<Integer, String> onSend(ProducerRecord<Integer, String> record) {

        someBean.execute("producer interceptor");

        return record;
    }

    /**
     * 被手动提交后执行代码
     * @param metadata
     * @param exception
     */
    @Override
    public void onAcknowledgement(RecordMetadata metadata, Exception exception) {

    }

    /**
     * 关闭需要执行代码
     */
    @Override
    public void close() {

    }

    /**
     * 可以从配置文件获取一些配置信息
     * @param configs
     */
    @Override
    public void configure(Map<String, ?> configs) {

        someBean = (SomeBean) configs.get("someBean");
    }
}
/**
 * 自定义消费者拦截器
 * @author fangyuan
 */
public class PersonInfoConsumerInterceptor implements ConsumerInterceptor<Integer,String> {

    private SomeBean someBean;

    @Override
    public ConsumerRecords<Integer, String> onConsume(ConsumerRecords<Integer, String> records) {

        someBean.execute("consumer interceptor");

        return records;
    }

    /**
     * 提交offset 时需要处理的
     * @param offsets
     */
    @Override
    public void onCommit(Map<TopicPartition, OffsetAndMetadata> offsets) {

    }

    /**
     * 关闭需要执行代码
     */
    @Override
    public void close() {

    }

    /**
     * 可以从配置文件获取一些配置信息
     * @param configs
     */
    @Override
    public void configure(Map<String, ?> configs) {

        someBean = (SomeBean) configs.get("someBean");
    }
}
/**
 *拦截器中依赖Bean
 * @author fangyuan
 */
public class SomeBean {

    public  void execute(String nr){
        System.out.println(nr);

    }
}

 

 

第二步:消费者生产者绑定拦截器

消费者:
        props.put(ConsumerConfig.INTERCEPTOR_CLASSES_CONFIG, PersonInfoConsumerInterceptor.class.getName());
        SomeBean someBean = new SomeBean();
        props.put("someBean",someBean);

生产者:
        props.put(ProducerConfig.INTERCEPTOR_CLASSES_CONFIG, PersonInfoProducerInterceptor.class.getName());
        SomeBean someBean = new SomeBean();
        props.put("someBean",someBean);

测试结果:

Demo项目github地址:https://github.com/fangyuan94/kafkaDemo

Java面试题 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。JRE(Java Runtime Environment),Java运行环境。JDK(Java Development Kit),Java开发工具包。如果重写了equals方法,equals比较的是对象的内容。如果没有重写equals,equals就相当于==;对于引用类型,==比较的是堆中内存对象的地址;对于基本类型,==比较的是栈中的值; 阅读详情

相关推荐

Kafka中的consumer拦截器

之前的文章写了最后有提到,在执行真实的消费方法之前会调用消费者的拦截器处理消息,最后再交给RecordMessagingMessageListenerAdapter进行代理和反射调用消费方法。对于消费者,SpringBoot在整合方式中的spring-kafka并没有用原生的ConsumerConnector,,而是借助原生client的拉取消息功能做了自己的消费模型的实现,提供了@KafkaListener注解这种方式实现消费。

WannaRunning的博客 1116

四.Kafka入门到精通-SpringBoot整合Kafka(Producer拦截器&Producer监听器)

上一章讲了一下Kafka在SpringBoot如何使用,本篇文章在上一篇文章的基础上讲解如何给生产者添加监听器和拦截器

墨家巨子@俏如来 4523

SpringBoot整合kafka,代码简洁,自动分配分区和指定分区消费(亲测可用)

SpringBoot整合kafka代码,两个工程 一个消费者 一个生产者,利用定时任务和restapi发送消息,自动分配分区消费和指定分区消费,再也不用写死分区了真好。代码简洁。欢迎大家下载。

【kafka】生产者拦截器和消费者拦截器

拦截器(Interceptor)是在kafka 0.10.0.0引入的,主要用来实现client端的一些定制化控制逻辑。

qq_43460095的博客 1119

【CATIA的二次开发38】对象Selection交互选择部分方法介绍01

在CATIA V5的VBA开发中,Selection对象是用户交互的核心组件,用于管理用户在图形区域或特征树中的选择操作。Selection 对象是 CATIA VBA 中的中央交互枢纽,充当用户界面与程序逻辑之间的桥梁。它代表当前在图形区域或特征树中被选中的元素集合,是自动化操作的基础。

学习共勉:不积跬步,无以至千里; 不积小流,无以成江海。 1342

STM32 HAL库定时器中断实现步进电机S型加减速控制与脉冲精准计数

本文详细介绍了如何使用STM32 HAL库定时器中断实现步进电机的S型加减速控制与脉冲精准计数。通过CubeMX配置定时器、计算PSC和ARR值,并结合S型曲线算法,实现平滑启停和精准定位。文章还提供了脉冲计数方案和常见问题排查技巧,帮助开发者优化步进电机控制性能。

weixin_29189363的博客 373

SpringBoot - Kafka的集成与使用详解 (消费者)

SpringBoot - Kafka的集成与使用详解 (消费者)

m0_37695902的博客 3843

C语言图形化界面——含图形、按钮、鼠标、进度条等部件制作(带详细代码、讲解及注释)

本文借助easyx库函数(提供下载链接),很方便地用C语言实现了鼠标、按钮、进度条、坐标尺等操作,为普通C程序的友好人机交互界面提供了一种简单便捷的方案。

体会编程语言独到的美 17万+

SpringBoot集成kafka-自定义拦截器(可以在拦截器中做记录日志、安全检查等操作)

SpringBoot集成kafka-自定义拦截器(可以在拦截器中做记录日志、安全检查等操作)

qq_46112274的博客 1438

利用Python实现纬度加权平均(即NCL中的wgt_areaave)

当处理全球数据的时候,最常见的分析就是全球、北半球平均了,这时候一定要注意要根据纬度等信息进行加权,求加权平均,要不然结果肯定会不准。但是对于Python中,常规的计算包里面是没有的,或许现在有其他包可以实现,也可以告诉我~。

记录基于python语言处理气象问题的一些代码,包括不限于气象数据读取、机器学习和深度学习建模。 5745

Adaboost入门教程——最通俗易懂的原理介绍(图文实例)

Adaboost入门教程——最通俗易懂的原理介绍(图文实例)

Max的杂物仓 11万+

springboot2.x +kafka使用和源码分析三(生产者配置)

上一章描述springboot支持对于topic进行配置管理,本章主要叙说springboot对于produce支持。 这里通过两种方式 第一种:由springboot框架来初始化基础bean,我们只需要在yml配置文件中编写配置即可。如下图所示(常规配置 具体所有配置可参考http://kafka.apache.org/documentation/的producer) 第二种:我们自...

F_Hello_World的博客 1215

LwIP TCP Client 解决长数据发送的困扰

问题描述 LWIP 的 TCP Client 发送数据可以调用 tcp_write() 函数,将数据储存在缓冲区里面,然后等待超时自动发送或者调用tcp_output()函数进行发送。 然而 tcp_write() 函数 需要发送的数据过长时,将无法发送,并返回 ERR_MEM。 tcp_write()函数解析 tcp_write()的函数代码很多,就不细看代码了, 先看tcp_write()的完整函数: err_t tcp_write(struct tcp_pcb *pcb, const void

tiantangmoke的博客 1万+

Java开发面试技巧,2021最新网易Java面经

面试官最爱问的Kakfa,基础+进阶+高级,疯狂轰炸! Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息

m0_56252652的博客 111

vue2/3 - 详细实现内网使用离线百度地图功能,百度地图如何离线加载详细教程(内网部署及使用),在vue中无需网络离线使用百度地图相关功能,提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,百度地图,离线使用百度地图,百度地图瓦片官方下载,vue内网使用百度地图离线无网络,断网情况下使用百度地图,vue离线百度地图教程,如何实现内网部署百度地图,无需联网离线使用,vue+ts实现离线百度地图 内网离线百度地图,如何在百度地图Vue项目中下载离线地图,百度离线地图加载不出来,百度地图离线使用不显示怎么办,怎么解决vue内网使用离线百度地图加载失败问题,vue实现离线地图+百度瓦片,vue引入百度离线地图,vue项目如何使用离线百度地图和自定义地图样式,百度离线地图的下

✅ 精选推荐文章 1万+

OV5645摄像头原理图设计,已量产

在嵌入式视觉项目里,摄像头小板真正决定量产稳定性的,往往不是把传感器接出来这件事本身,而是电源域有没有拆清、参考时钟够不够干净、主板调试时有没有留出可落地的接口。ATK-MC5645 这张原理图的价值,就在于它没有把 OV5645 裸接到一排连接器上,而是把 AFVDD_2V8、DOVDD_1V8、DVDD_1V5、24MHz 时钟和 MIPI/控制信号都收敛在一块独立模组上。

不脱发的程序猿 333

程序员必会知识!分布式架构+RPC+kafka+多线程,极其重要

一、前言 红黑树,是一种高效的自平衡二叉查找树 Rudolf Bayer 于1978年发明红黑树,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。 红黑树具有良好的效率,它可在近似O(logN) 时间复杂度下完成插入、删除、查找等操作,因此红黑树在业界也被广泛应用,比如 Java 中的 TreeMap,JDK 1.8 中的 HashMap、C++ STL 中的 map

m0_56301848的博客 252

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【必收藏】不得不看的Spring相关资源整合

Spring是于2003年兴起的一个轻量级的Java开发框架,致力于简化Java EE 的企业级应用开发。而Spring Boot是由Pivotal团队提供的全新框架,Spring Boot简化了基于Spring的应用开发,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid applicati...

Felix_阳的博客 2677

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Spring Boot自定义Starter:从原理到实战全解析

文章摘要: SpringBoot自定义Starter通过封装通用功能与自动配置机制,实现开箱即用的模块化开发。核心原理基于spring.factories(或新版AutoConfiguration.imports)注册自动配置类,结合@Conditional条件注解动态加载Bean。开发步骤包括:1)创建Maven项目并引入spring-boot-autoconfigure依赖;2)编写带@Configuration和@EnableConfigurationProperties的配置类;3)定义属性绑定类(

持续输出Java相关知识 1516

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一文搞懂 Spring Cloud Gateway 源码

Spring Cloud Gateway 是 Spring Cloud 体系中的一个 API 网关组件,它基于 Spring Framework 5 和 Spring Boot 2.0 开发,并且构建在Project Reactor(响应式编程模型)之上,因此它也是一种异步非阻塞的 API 网关,适用于高并发场景。当然,它也具备网关所应有的能力:路由转发、过滤、限流、熔断等。

2301_78976656的博客 894

Java面试经验累积

需要从数据结构、哈希算法、冲突解决三个层次来回答。核心组件:Node<K,V>[] table:哈希桶数组,每个元素是一个链表或红黑树的头节点int threshold:扩容阈值(capacity * loadFactor)float loadFactor:负载因子,默认0.75(时间和空间的权衡)

qq_51476492的博客 340

使用SpringBoot集成kafka实现简单的消息生产与消费

kafka是安装在本地的,系统为windows 1. 导入依赖: <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> ...

Later_1999的博客 707

疫情分析--数据清洗(kafka消费者拦截器)

^^

weixin_45389898的博客 2188

kafka-生产者拦截器(SpringBoot整合Kafka)

kafka-生产者拦截器(SpringBoot整合Kafka)

小丁的博客 1746
上一篇: springboot2.x +kafka使用和源码分析五(消费者配置使用)
下一篇: springboot2.x +kafka使用和源码分析八(自定义分区器)
F_Hello_World
博客等级 码龄11年 38粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值