除了 Properties,我们使用最多的就是 Consumer 定义的 API 以及它的实现类 KafkaConsumer,分为以下几类
| API 类别 | 接口名 | 说明 |
|---|---|---|
| 元数据 | assignment | 获取该消费者分配的分区信息 |
| Set |
该消费者消费的主题名称 | |
| void subscribe(Collection) | 订阅主题 | |
| subscribe(Collection, ConsumerRebalanceListener callback) | 当消费者订阅的主题发生变化时,就会回调相关方法。我们可以在回调中处理 offset,比如将它们持久化至 Kafka 或其它存储层中。 | |
| assign(Collection |
手动指定消费分区 | |
| unsubscribe() | ||
| 拉取数据 | poll(Duration) | 从相关 Broker 端拉取数据。如果数据已就绪,则会立即返回,否则会等待直到超时。 |
| 提交位移 | commitSync() | 同步提交最近一次 poll() 操作的位移。与主题和分区相关。如果超过 default.api.timeout.ms,则会抛出 TimeoutException 异常。 |
| commitAsync() | 异步提交所有主题位移 | |
| commitAsync(OffsetCommitCallback) | 异步提交位移,并有回调方法。如果出现异常,会传递给回调方法,或者被丢弃。 | |
| 设置初始位移 | seek(TopicPartition, long) seekToBeginning seekToEnd |
下次 poll() 操作所用到的位移,注意,可能会导致数据丢失 |
| 获取分区下一条待写入消息位移 | position(TopicPartition) | 获取某分区下一条写入的位移值 |
| 获取分区提交位移 | committed(Set |
获取最后一次向给定分区提交的位移。 |
| metrics | 获取消费者监控指标 | |
| partitionsFor(String) | 获取给定主题的元数据信息 | |
| listTopics() | 获取主题 | |
| Set |
获取以前调用 pause(Collection) 暂停的分区集合 | |
| pause(Collection |
||
| resume(Collection |
重新开启被暂停使用的分区集合 | |
| offsetsForTimes(Map |
根据时间戳获取对应的偏移量 | |
| beginningOffsets(Collection |
||
| endOffsets(Collection |
||
| ConsumerGroupMetadata groupMetadata() | 获取消费者组元数据信息 | |
| enforceRebalance() | 强制消费者组开启重平衡 | |
| close(Duration) | 关闭消费者 | |
| wakeup() | 中断 NIO 的 poll 方法, |
