kafka 基于注解配置 单个应用实例创建多个 consumer线程,消费多个分区

本文介绍了如何在Spring-Kafka框架下,通过注解配置单个应用实例创建多个consumer线程,以消费Kafka topic的多个分区。传统的做法是为每个分区启动一个consumer节点,但这可能导致资源浪费。文中提出了另一种思路,即在一个应用实例内启动多个线程,每个线程对应一个分区,从而节省资源。配置中应注意某些设置可能不会生效,启动项目后可查看日志确认效果。
摘要由CSDN通过智能技术生成

需求说明:

根据kafka的生产消费模型,kafka的topic可以创建成多个分区,一个消费者组内,一个消费者是可以对应多个分区的,但是通常出于性能考虑,最好让一个分区能对应到一个consumer。

一种实现思路是:topic有多少个分区,然后consumer节点就启动多少个,这样多少会有些浪费。如果是微服务应用,这个应用只做消费数据这一件事情,分配1-2个G的内存资源还是有些浪费的。

另外一种思路就是:单个应用实例启动多个线程,然后多个线程分别对应一个分区。

代码配置实现

这里使用 spring-kafka 框架进行配置。

    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
        <version>2.1.7.RELEASE</version>
    </dependency>

配置类代码

package com.xxx.es.job.config;


import com.xxx.es.job.mq.PointsTransactionDetailKafkaListenerV2;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.config.KafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.spring
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值