一、消费者和消费者组
- 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. 再建衡监听器
- 再均衡之前、消费者停止读取之后
- 重新分配之后、开始读取消息之前
六、多线程
消费者是非线程安全的
网友评论