Kafka核心技术与实战Day19多线程开发消费者实例

153 阅读1分钟

Kafka Java Consumer设计原理

Kafka Consumer API中最重要的, 当属它的入口类KafkaConsumer. KafkaConsumer是双线程设计, 即用户主线程和心跳线程.

用户主线程: 启用Consumer应用程序的县城.

心跳线程: 负责定期给对应的Broker机器发送心跳请求, 以标识消费者应用的存活性. 它的目的之一, 期望它能将心跳频率与主线程调用KafkaConsumer.poll方法的频率分开, 从而解耦真实的消息处理逻辑与消费者组成员存活性管理.

多线程方案

基于KafkaConsumer不是线程安全的事实, 我们能够制定两套多线程方案.

  1. 消费者程序启动多个线程, 每个线程维护专属的KafkaConsumer实例, 负责完整的消息获取、消息处理逻辑.

  2. 消费者程序使用单或多线程获取消息, 同时创建多个消费线程执行消息处理逻辑.

image.png

此文章为3月Day19学习笔记, 内容来源于极客时间《Kafka核心技术与实战》, 强烈推荐该课