设为首页 加入收藏

TOP

springboot + @KafkaListener 手动提交及消费能力优化
2019-05-06 14:29:40 】 浏览:213
Tags:springboot @KafkaListener 手动 提交 消费 能力 优化
public class KonkaKafkaListener {

    private final static Logger LOGGER = LoggerFactory.getLogger(KonkaKafkaListener.class);


    @Autowired
    private RouterService routerService;


    @KafkaListener(containerFactory = "kafkaListenerContainerFactory", topics = "test")
    public void consumerListener(List<ConsumerRecord> consumerRecords, Acknowledgment ack) {
        ack.acknowledge();//直接提交offset
        if (consumerRecords.size() > 0) {
            PartitionCounter.addCounter(consumerRecords.get(0).partition(), consumerRecords.size());
        }
        Iterator<ConsumerRecord> iterator = consumerRecords.iterator();
        while (iterator.hasNext()) {
            ConsumerRecord consumerRecord = iterator.next();
            String key = consumerRecord.key().toString();
            KafkaLogMessage kafkaLogMessage = (KafkaLogMessage) consumerRecord.value();
            if (kafkaLogMessage == null) {
                continue;
            }
            routerService.handleKafkaMessage(key, kafkaLogMessage);
        }
    }
#消费者并发启动个数(对应分区个数)每个listener方法
kafka.concurrency=10  

将启动器的并发提高到和分区数一致

kafka 消费能力的提高

1、自动提交的实现

2、autoCommitIntervalMs 设置每次隔多久自动提交offset

3、kafka.max.poll.interval.ms 和 sessionTimeout

max.poll.interval.ms ,它表示最大的poll数据间隔,如果超过这个间隔没有发起pool请求,但heartbeat仍旧在发,就认为该consumer处于 livelock状态。就会将该consumer退出consumer group

之后就会触发导致reblance

·heartbeat.interval.ms

心跳间隔。心跳是在consumer与coordinator之间进行的。心跳是确定consumer存活,加入或者退出group的有效手段。

这个值必须设置的小于session.timeout.ms,因为:

当Consumer由于某种原因不能发Heartbeat到coordinator时,并且时间超过session.timeout.ms时,就会认为该consumer已退出,它所订阅的partition会分配到同一group 内的其它的consumer上。

通常设置的值要低于session.timeout.ms的1/3。

默认值是:3000 (3s)

·session.timeout.ms

Consumer session 过期时间。这个值必须设置在broker configuration中的group.min.session.timeout.ms 与 group.max.session.timeout.ms之间。

其默认值是:10000 (10 s)

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于kafka连接的一个小问题 下一篇高并发架构实战(八) Kafka的安装..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目