springboot监听kafka(不使用spring-kafka)
一、不使用spring-kafka的原因
kafka服务端版本为0.10.0.1-Ipv20191220-hbp2.1.0,为避免版本问题导致监听失败,客户端也采用0.10.0.1版本,客户端0.10.0.1版本对应的spring-kafka版本为1.1.0,实际开发过程中发现spring-kafka1.1.0版本与parent 版本会出现冲突,因此舍弃该方案。
二、代码
kafkaconfig:
#kafka配置
bootstrap.servers=10.194.101.240:9092
enable.auto.commit=true
auto.commit.interval.ms=1000
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
group.id=firstindagvhemgr
#kafka topic
kafkaTopicName=test
@Configuration
@Slf4j
public class KafkaConfigNew { @Autowired
private Environment environment; @Autowired
private KafkaConsumerListener kafkaConsumerListener; public static KafkaConsumer<String, String> kafkaConsumer; @Bean
public void loadKafkaConfig() {
Properties p = new Properties();
p.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, environment.getProperty("bootstrap.servers"));
p.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, environment.getProperty("key.deserializer"));
p.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, environment.getProperty("value.deserializer"));
p.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, environment.getProperty("enable.auto.commit"));
p.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, environment.getProperty("auto.commit.interval.ms"));
p.put(ConsumerConfig.GROUP_ID_CONFIG, environment.getProperty("group.id")); kafkaConsumer = new KafkaConsumer<String, String>(p);
kafkaConsumer.subscribe(Collections.singletonList(environment.getProperty("kafkaTopicName")));// 订阅消息
log.info("消息订阅成功!kafka配置:" + p.toString());
//启动消息监听线程
KafkaListenerJob kafkaListenerJob = new KafkaListenerJob(kafkaConsumerListener);
Thread t = new Thread(kafkaListenerJob);
t.start();
}
}
@Slf4j
public class KafkaListenerJob implements Runnable { private KafkaConsumerListener kafkaConsumerListener; //注入消息监听处理类
public KafkaListenerJob(KafkaConsumerListener kafkaConsumerListener) {
this.kafkaConsumerListener = kafkaConsumerListener;
} @Override
public void run() {
log.info("kafka消息监听任务已启动!");
//进行消息监听
while (true) {
ConsumerRecords<String, String> records = KafkaConfigNew.kafkaConsumer.poll(100);
//log.info("poll数据:" + JSON.toJSONString(records));
for (ConsumerRecord<String, String> record : records) {
try {
kafkaConsumerListener.listen(record);
} catch (Exception e) {
log.error("消息消费异常!", e);
}
}
}
}
}
@Slf4j
@Service
public class KafkaConsumerListener { //校验mapper
@Autowired
private KafkaDataCheckMapper kafkaDataCheckMapper; @Autowired
private FTPUtils ftpUtils; /**
* kafka消息处理类
*
* @param consumerRecord
*/
//@KafkaListener(topics = "${kafkaTopicName}")
public void listen(ConsumerRecord<String, String> consumerRecord) {
String value = (String) consumerRecord.value();
log.info("接收到一条消息:" + value);
}
}
springboot监听kafka(不使用spring-kafka)的更多相关文章
- SpringBoot监听redis过期key
开启过期监听 vim /etc/redis.conf 取消notify-keyspace-events Elg的注释 pom.xml 添加: <dependency> <groupI ...
- SpringBoot监听redis订阅监听和发布订阅
前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...
- Spring Kafka和Spring Boot整合实现消息发送与消费简单案例
本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 先前我已经分享了Kafka的基本介绍与集群环境搭建方法.关于Kafka的 ...
- Spring Kafka整合Spring Boot创建生产者客户端案例
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 创建一个kafka-producer-master的maven工程.整个项目结构如下: ...
- Spring Boot实践——事件监听
借鉴:https://blog.csdn.net/Harry_ZH_Wang/article/details/79691994 https://blog.csdn.net/ignorewho/arti ...
- Spring Boot(六)自定义事件及监听
事件及监听并不是SpringBoot的新功能,Spring框架早已提供了完善的事件监听机制,在Spring框架中实现事件监听的流程如下: 自定义事件,继承org.springframework.con ...
- SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)
SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringApplicat ...
- springBoot高级:自动配置分析,事件监听,启动流程分析,监控,部署
知识点梳理 课堂讲义 02-SpringBoot自动配置-@Conditional使用 Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载 ...
- 深入理解Spring的容器内事件发布监听机制
目录 1. 什么是事件监听机制 2. JDK中对事件监听机制的支持 2.1 基于JDK实现对任务执行结果的监听 3.Spring容器对事件监听机制的支持 3.1 基于Spring实现对任务执行结果的监 ...
随机推荐
- 详细介绍Windows下也能够使用osw性能升级历史
1.Windows系统历史性能分析困难背景 在Linux/Unix上.要追朔历史性能,一般採用部署nmon进行性能监控採集与存储的方式实现.可是却没有在Windows上的版本号. Windows系统假 ...
- 力扣算法经典第一题——两数之和(Java两种方式实现)
一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- java中的interface(接口)
概念 usb插槽就是现实中的一个接口 你可以把u盘都插在usb插槽上,而不用担心买来的u盘插不进插槽中不管是插电脑,还是插相机,还是插收音机原因是做usb的厂家和做各种设备的厂家都遵守了统一的规定包括 ...
- 谁才是微服务赢家:Quarkus 与 Spring Boot
在容器时代("Docker 时代")Java 仍然处于领先地位,但哪个更好?Spring Boot 还是 Quarkus? 谁会最先进的?Spring Boot 或 Quarkus ...
- windows下安装skywalking8.6.0(用于本地开发调试代码)
安装jdk https://www.cnblogs.com/uncleyong/p/10732951.html 下载.安装.配置skywalking 下载 地址:https://skywalking. ...
- c# 编程学习(五)
使用复合赋值和循环语句 使用 while 语句,可在条件为 true 的前提下重复运行一个语句.while 语句的语法如下: while ( booleanExpression ) statemen ...
- Oracle的发展历程
我们学习的是ORACLE(甲骨文)公司(就是收购Sun公司的甲骨文公司)的Oracle数据库(Oracle Database).Oracle数据库是关系型数据库中的大型数据库,存储量大,而且也非常安全 ...
- Chrome:插件安装
1.首先要下载一油猴插件管理器 得到crx文件 2.打开'扩展程序',在Chrome右上角 3.启动开发者模式(右上角),然后将油猴crx文件拖入界面中,会自动安装油猴 安装完成后,在工具栏中会出现油 ...
- WPS:在Word中插入Visio绘制的流程图
在Word菜单栏 插入->对象 如果Visio绘图已经保存为了文件,可以选择由文件创建
- python post请求中Content-Typ为application/x-www-form-urlencoded; charset=UTF-8 解决方案
# -*- coding: utf-8 -*- import requests import json from urllib import parse import quotes def GtgLo ...