kafka consumer

一、消费者和消费者组

  • P2P
    所有的消费者隶属同一消费者组
  • Pub/Sub
    所有的消费者隶属不同的消费者组

二、参数

1. 必要参数

  • bootstrap.servers
  • group.id
  • key.deserializer和value.deserializer

2. 其他

三、消息位移

1. 提交

  • 自动提交
    enable.auto.commit(默认true)、auto.commit.interval.ms(默认5s),也就是默认每5秒提交一次,提交的是下一条拉取的消息的offset
  • 手动提交
    有同步和异步两种方式,对于每一种方式,又有多个重载的方法,分别对应于是否指定offset(不指定的话会根据上一次poll的结果来自动指定)

2. 指定位移消费

  • auto.offset.reset
    查找不到消费位移或位移越界就会触发这个传参数,有两种选择,earliest——从头开始;latest——从最新的开始;none——直接报NoOffsetForPartitionException
  • seek方法
    根据offset参数重置poll的位置

四、Rebalance

Rebalance是分区的所属权重新分配的过程,这期间,消费者组是无法消费的。

五、组件

1. 消费者拦截器

  • poll返回之前
  • 提交commit之后
  • close

2. 再建衡监听器

  • 再均衡之前、消费者停止读取之后
  • 重新分配之后、开始读取消息之前

六、多线程

消费者是非线程安全的

你可能感兴趣的:(kafka consumer)