Springboot2整合kafka的两种使用方式

 


1、Springboot2整合kafka

 

原文链接: https://blog.csdn.net/victoylin/article/details/93409055
kafka
docker上安装环境
Springboot2引入kafka
基于注解
基于客户端


2、Springboot注解@KafkaListener实现Kafka批量消费

原文链接:https://www.jianshu.com/p/5370fff55cff

在使用时Kafka时,经常遇到大批量消息在队列中,如果一个消息一个消息的消费的话效率太低下了,所以批量消费消息是很有必要的,废话不多数,直接上代码。

批量监听器

从版本1.1开始,@KafkaListener可以被配置为批量接收从Kafka话题队列中的Message。要配置监听器容器工厂以创建批处理侦听器,需要设置batchListener属性为true,代码如下:

@Bean
KafkaListenerContainerFactory<?> batchFactory() {
  ConcurrentKafkaListenerContainerFactory<String, String> factory = new 
        ConcurrentKafkaListenerContainerFactory<>();
  factory.setConsumerFactory(new DefaultKafkaConsumerFactory<>(consumerConfigs()));
  factory.setBatchListener(true); // 开启批量监听
  return factory;
}

@Bean
public Map<String, Object> consumerConfigs() {
  Map<String, Object> props = new HashMap<>();
  props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
  props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, autoOffsetReset);
  props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
  props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 100); //设置每次接收Message的数量
  props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "100");
  props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 120000);
  props.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, 180000);
  props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
  props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
  return props;
}

批量接收

在@KafkaListener注解中声明工厂为batchFactory()

@KafkaListener(topics = "teemo", id = "consumer", containerFactory = "batchFactory")
public void listen(List<ConsumerRecord<?, ?>> list) {
  List<String> messages = new ArrayList<>();
  for (ConsumerRecord<?, ?> record : list) {
    Optional<?> kafkaMessage = Optional.ofNullable(record.value());
    // 获取消息
    kafkaMessage.ifPresent(o -> messages.add(o.toString()));
  }
  if (messages.size() > 0) {
    // 更新索引
    updateES(messages);
  }
}


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值