这一部分主要是从客户端使用的角度来理解 
 Kakfa 
 的重要机制。重点依然是要建立自己脑海中的 
 Kafka 
 消费模型。Kafka 
 的 
 HighLevel API 
 使用是非常简单的,所以梳理模型时也要尽量简单化,主线清晰,细节慢慢扩展。  
 
 
 
 
  一、从基础的客户端说起  
 
 
  
  Kafka 
  提供了非常简单的客户端 
  API 
  。只需要引入一个 
  Maven 
  依赖即可: 
 
 
  
 
  
   1 
   、消息发送者主流程  
  
 
   
   然后可以使用 
   Kafka 
   提供的 
   Producer 
   类,快速发送消息。  
  
 
   
 
   
 
   
    整体来说,构建 
    Producer 
    分为三个步骤:  
   
 
    
    1.  
    设置 
    Producer 
    核心属性  
    : 
    Producer 
    可选的属性都可以由 
    ProducerConfig 
    类管理。比如  
   
 
    
    ProducerConfig.BOOTSTRAP_SERVERS_CONFIG 
    属性,显然就是指发送者要将消息发到哪个 
    Kafka 
    集群上。这是每个Producer 
    必选的属性。在 
    ProducerConfig 
    中,对于大部分比较重要的属性,都配置了对应的DOC 
    属性进行描述。  
   
 
    
    2.  
    构建消息 
    : 
    Kafka 
    的消息是一个 
    Key-Value 
    结构的消息。其中, 
    key 
    和 
    value 
    都可以是任意对象类型。其中,key 
    主要是用来进行 
    Partition 
    分区的,业务上更关心的是 
    value 
    。  
   
 
    
    3.  
    使用 
    Producer 
    发送消息。 
    :通常用到的就是单向发送、同步发送和异步发送者三种发送方式。  
   
 
    
    2 
    、消息消费者主流程  
   
 
    
    接下来可以使用 
    Kafka 
    提供的 
    Consumer 
    类,快速消费消息。 
   
 
   
 
 
 
 
  整体来说, 
  Consumer 
  同样是分为三个步骤:  
 
 
  
  1.  
  设置 
  Consumer 
  核心属性  
  :可选的属性都可以由 
  ConsumerConfig 
  类管理。在这个类中,同样对于大部分比较重要的属性,都配置了对应的DOC 
  属性进行描述。同样 
  BOOTSTRAP_SERVERS_CONFIG 
  是必须设置的属性。  
 
 
  
  2.  
  拉取消息 
  : 
  Kafka 
  采用 
  Consumer 
  主动拉取消息的 
  Pull 
  模式。 
  consumer 
  主动从 
  Broker 
  上拉取一批感兴趣的消息。  
 
 
  
  3.  
  处理消息,提交位点 
  :消费者将消息拉取完成后,就可以交由业务自行处理对应的这一批消息了。只是消费者需要向Broker 
  提交偏移量 
  offset 
  。如果不提交 
  Offset 
  , 
  Broker 
  会认为消费者端消息处理失败了,还会重复进行推送。  
 
 
  
  Kafka 
  的客户端基本就是固定的按照这三个大的步骤运行。在具体使用过程中,最大的变数基本上就是给生产者和消费者的设定合适的属性。这些属性极大的影响了客户端程序的执行方式。 
 
 



















