@KafkaListener和@KafkaListeners的使用
正文前先来一波福利推荐:
福利一:
百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。
福利二:
毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。
获取方式:
微信关注 精品3分钟 ,id为 jingpin3mins,关注后回复 百万年薪架构师 ,精品收藏PPT 获取云盘链接,谢谢大家支持!

------------------------正文开始---------------------------
2. consumer
使用了@KafkaListener注解。
2.1. pom.xml
引入以下依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
2.2. 配置类
@Configuration
@EnableKafka
public class KafkaConfig {
@Value("${kafka.bootstrap.servers}")
private String kafkaBootstrapServers;
@Value("${session.timeout.ms}")
private Integer sessionTimeoutMs;
@Value("${enable.auto.commit}")
private boolean enableAutoCommit;
@Value("${auto.commit.interval.ms}")
private Integer autoCommitIntervalMs;
@Value("${auto.offset.reset}")
private String autoOffsetReset;
@Value("${group.id}")
private String groupId;
@Bean
KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Integer, String>> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<Integer, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
factory.setConcurrency(3);
factory.getContainerProperties().setPollTimeout(3000);
return factory;
}
@Bean
public ConsumerFactory<Integer, String> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs());
}
@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaBootstrapServers);
props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, enableAutoCommit);
props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, autoCommitIntervalMs);
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, sessionTimeoutMs);
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, autoOffsetReset);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, IntegerDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
return props;
}
@Bean
public KafkaConsumer consumer() {
return new KafkaConsumer();
}
}
2.3. 消费处理
public class KafkaConsumer {
@KafkaListeners({@KafkaListener(topics="topic1"), @KafkaListener(topics="topic2")})
public void listen(ConsumerRecord<Integer, String> msg) {
// 消费到数据后的处理逻辑
}
}
2.4. @KafkaListener和@KafkaListners
@KafkaListeners是@KafkaListener的Container Annotation,这也是jdk8的新特性之一,注解可以重复标注。
@KafkaListeners({@KafkaListener(topics="topic1"), @KafkaListener(topics="topic2")})
public void listen(ConsumerRecord<Integer, String> msg) {}
等同于
@KafkaListener(topics="topic1")
@KafkaListener(topics="topic2")
public void listen(ConsumerRecord<Integer, String> msg) {}
2.5. @KafkaListener使用小结
在注解上可以方便地进行各种配置,但是如果要消费的topic个数不定,用@KafkaListener就很难优雅解决。
注解要求必须在compile-time就能确定值,可以移步stackOverFlow查看更加详细的解释。
@KafkaListener和@KafkaListeners的使用的更多相关文章
- spring-kafka之KafkaListener注解深入解读
简介 Kafka目前主要作为一个分布式的发布订阅式的消息系统使用,也是目前最流行的消息队列系统之一.因此,也越来越多的框架对kafka做了集成,比如本文将要说到的spring-kafka. Kafka ...
- springboot + @KafkaListener 手动提交及消费能力优化
转载 https://blog.csdn.net/asd5629626/article/details/82776450 https://blog.csdn.net/asd5629626/artic ...
- Spring-framework应用程序启动loadtime源码分析笔记(三)——@KafkaListener
org.springframework.context.annotation.ConfigurationClassParser.getConfigurationClasses()读所有@Configu ...
- Spring for Apache Kafka @KafkaListener使用及注意事项
官方文档: https://docs.spring.io/spring-kafka/reference/html/ @KafkaListener The @KafkaListener annota ...
- Spring-Kafka —— KafkaListener定时启动和停止
一.定时启动的应用场景 比如现在单机环境下,我们需要利用Kafka做数据持久化的功能,由于用户活跃的时间为早上10点至晚上12点,那在这个时间段做一个大数据量的持久化可能会影响数据库性能导致用户体验降 ...
- Spring-Kafka —— KafkaListener禁止自启动
应用服务启动时,KafkaListener默认会自动启动进行消费,如果想不自动消费,可以设置AutoStartup属性值为false @Override @KafkaListener(id = Con ...
- Spring-Kafka —— KafkaListener手动启动和停止
一.KafkaListener消费 /** * 手动提交监听. * * @param record 消息记录 * @param ack 确认实例 */ @Override @KafkaListener ...
- Kafka从入门到进阶
1. Apache Kafka是一个分布式流平台 1.1 流平台有三个关键功能: 发布和订阅流记录,类似于一个消息队列或企业消息系统 以一种容错的持久方式存储记录流 在流记录生成的时候就处理它们 ...
- 《Kafka笔记》4、Kafka架构,与其他组件集成
目录 1 kafka架构进阶 1.1 Kafka底层数据的同步机制(面试常问) 1.1.1 高水位截断的同步方式可能带来数据丢失(Kafka 0.11版本前的问题) 1.1.2 解决高水位截断数据丢失 ...
随机推荐
- git commit 详解
git commit 命令用来将本地暂存的修改提交到版本库. git commit -m '提交信息'. 我们用的比较多的应该就是-m 参数.添加提交信息. 经常手抖的同学可能会知道,git comm ...
- 【leetcode】1240. Tiling a Rectangle with the Fewest Squares
题目如下: Given a rectangle of size n x m, find the minimum number of integer-sided squares that tile th ...
- 001_ARM学习_六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
以下内容为转载: 注:非常感谢博主“希望之光”,文章转自他的博客:http://blog.chinaunix.net/uid-20379123-id-1956584.html ARM的六大类指令集 ...
- ora-28002
1.查看指定概要文件(如default)的密码有效期设置: SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_na ...
- 一些有用的dll
1.生成excel工具- EPPlus EPPlus.dll 2.生成word工具 - OpenXml DocumentFormat.OpenXml.dll 3.生成条形码工具 - ZXing zx ...
- [BJWC2008]王之财宝
嘟嘟嘟 如果没有限制,而且必须选\(m\)件的话,就是隔板法\(C_{n + m - 1} ^ {m - 1}\)了.现在要选至多\(m\)件,那么就相当于新增一个板儿,分出的新的盒子表示" ...
- Linux下查看文件和文件夹大小 df,du命令
转自 http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能 ...
- HTTP header 介绍 转载
这篇文章为大家介绍了HTTP头部信息,中英文对比分析,还是比较全面的,若大家在使用过程中遇到不了解的,可以适当参考下 HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/ ...
- 2016"百度之星" - 初赛(Astar Round2A)1001 All X(HDU5690)——找循环节|快速幂
一个由m个数字x组成的新数字,问其能否mod k等于c. 先提供第一种思路,找循环节.因为每次多一位数都是进行(t*10+x)mod k(这里是同余模的体现),因为x,k都确定,只要t再一样得到的答案 ...
- StringBuffer 拼写串
StringBuffer ssBuffer=new StringBuffer(); for (int i = 0; i < lista.size(); i++) { ssBuffer=ssBuf ...
