一、不使用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)的更多相关文章

  1. SpringBoot监听redis过期key

    开启过期监听 vim /etc/redis.conf 取消notify-keyspace-events Elg的注释 pom.xml 添加: <dependency> <groupI ...

  2. SpringBoot监听redis订阅监听和发布订阅

    前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...

  3. Spring Kafka和Spring Boot整合实现消息发送与消费简单案例

    本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 先前我已经分享了Kafka的基本介绍与集群环境搭建方法.关于Kafka的 ...

  4. Spring Kafka整合Spring Boot创建生产者客户端案例

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 创建一个kafka-producer-master的maven工程.整个项目结构如下: ...

  5. Spring Boot实践——事件监听

    借鉴:https://blog.csdn.net/Harry_ZH_Wang/article/details/79691994 https://blog.csdn.net/ignorewho/arti ...

  6. Spring Boot(六)自定义事件及监听

    事件及监听并不是SpringBoot的新功能,Spring框架早已提供了完善的事件监听机制,在Spring框架中实现事件监听的流程如下: 自定义事件,继承org.springframework.con ...

  7. SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)

    SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringApplicat ...

  8. springBoot高级:自动配置分析,事件监听,启动流程分析,监控,部署

    知识点梳理 课堂讲义 02-SpringBoot自动配置-@Conditional使用 Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载 ...

  9. 深入理解Spring的容器内事件发布监听机制

    目录 1. 什么是事件监听机制 2. JDK中对事件监听机制的支持 2.1 基于JDK实现对任务执行结果的监听 3.Spring容器对事件监听机制的支持 3.1 基于Spring实现对任务执行结果的监 ...

随机推荐

  1. 使用Supervisord部署go应用

    nohup nohup 是后台作业的意思, nohup运行的进程将会忽略终端信号运行.即后台运行一个命令.nohup COMMAND &用nohup运行命令可以使命令永久的执行下去,和用户终端 ...

  2. C#控制树莓派入门

    何为树莓派 许久没有写博客了,十二月份西安疫情的影响,居家隔离了一个多月,在其期间,学习了一下树莓派,觉得硬件还是挺有意思的,刚好也看到了巨硬有提供使用c#用来开发树莓派应用的解决方案叫Net Iot ...

  3. 你别告诉我你还在用Excel做数据透视分析吧,太low了!

    来到大数据分析的时代,大量的大数据分析软件涌现,尽管如此,如果今天有人问起最常用的数据透视分析工具是什么的时候,我猜想Excel应该是大家的不二之选. 但是其实我想说,用现在的手机来打比方,Excel ...

  4. WPF 开发,优化 AvalonEdit 显示单行超长文本的性能。

    路遥工具箱内置了一个名为"JSON 格式化"的功能.通过该功能可以将 JSON 字符串进行美化和简化(设置缩进和取消缩进). 该功能上线后收到很多客户的反馈:大部分经由网络传输的J ...

  5. 别再用 Redis List 实现消息队列了,Stream 专为队列而生

    上回说到使用 Redis 的 List 实现消息队列有很多局限性,比如: 没有良好的 ACK 机制: 没有 ConsumerGroup 消费组概念: 消息堆积. List 是线性结构,想要查询指定数据 ...

  6. 在 CentOS 或 RHEL 系统上检查可用的安全更新的方法

    当你更新系统时,根据你所在公司的安全策略,有时候可能只需要打上与安全相关的补丁.大多数情况下,这应该是出于程序兼容性方面的考量.那该怎样实践呢?有没有办法让 yum 只安装安全补丁呢? 答案是肯定的, ...

  7. mybatis plus框架的@TableField注解不生效问题总结

    一.问题描述 最近遇到一个mybatis plus的问题,@TableField注解不生效,导致查出来的字段反序列化后为空 数据库表结构: CREATE TABLE `client_role` ( ` ...

  8. GNS3与抓包工具Wireshark的关联

    转至:https://blog.51cto.com/xpleaf/1615145 (一)前言 本博文分享GNS3与Wireshark关联的方法. 显然现在网络上已经有类似的文章分享,而本博文旨在提供更 ...

  9. 积分图(三) - Boxfilter 的实现过程分析

    Boxfilter 快速计算 它可以使复杂度为O(MN)的求和,求方差等运算降低到O(1)或近似于O(1)的复杂度,它的缺点是不支持多尺度. Boxfilter 的原理有点类似 Integral Im ...

  10. cmd 连接宝塔终端