auto.offset.reset关乎kafka数据的读取。常用的二个值是latest和earliest,默认是latest。

如果kafka只接收数据,从来没来消费过,程序一开始不要用latest,不然以前的数据就接收不到了。应当先earliest,然后二都都可以。

earliest

当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费

latest

当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据

none

topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常

1.latest和earliest区别

  1. earliest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
  2. latest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据

提交过offset,latest和earliest没有区别,但是在没有提交offset情况下,用latest直接会导致无法读取旧数据。

2.创建topic

  1. # bin/kafka-topics.sh --create --zookeeper bigserver1:2181,bigserver2:2181,testing:2181 --replication-factor 2 --partitions 3 --topic tank
  2. Created topic "tank".
  3. # bin/kafka-topics.sh --describe --zookeeper bigserver1:2181,bigserver2:2181,testing:2181 --topic tank
  4. Topic:tank PartitionCount:3 ReplicationFactor:2 Configs:
  5. Topic: tank Partition: 0 Leader: 0 Replicas: 0,2 Isr: 0,2
  6. Topic: tank Partition: 1 Leader: 1 Replicas: 1,0 Isr: 1,0
  7. Topic: tank Partition: 2 Leader: 2 Replicas: 2,1 Isr: 2,1

3.生产数据和接收生产数据

  1. [root@bigserver1 kafka]# bin/kafka-console-producer.sh --broker-list bigserver1:9092,bigserver2:9092,testing:9092 --topic tank
  2. >1
  3. >2
  4. >3
  5. 。。。。。。。。。省略。。。。。。。。。
  6. [root@bigserver1 kafka]# bin/kafka-console-consumer.sh --bootstrap-server bigserver1:9092,bigserver2:9092,testing:9092 --topic tank --from-beginning
  7. 1
  8. 2
  9. 3

4.测试代码

  1. object tank {
  2. def main(args: Array[String]): Unit = {
  3. val pros: Properties = new Properties
  4. pros.put("bootstrap.servers", "bigserver1:9092,bigserver2:9092,testing:9092")
  5. /*分组由消费者决定,完全自定义,没有要求*/
  6. pros.put("group.id", "tank")
  7. //设置为true 表示offset自动托管到kafka内部的一个特定名称为__consumer_offsets的topic
  8. pros.put("enable.auto.commit", "false")
  9. pros.put("auto.commit.interval.ms", "1000")
  10. pros.put("max.poll.records", "5")
  11. pros.put("session.timeout.ms", "30000")
  12. //只有当offset不存在的时候,才用latest或者earliest
  13. pros.put("auto.offset.reset", "latest")
  14. pros.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
  15. pros.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
  16. val consumer: KafkaConsumer[String, String] = new KafkaConsumer[String, String](pros)
  17. /*这里填写主题名称*/
  18. consumer.subscribe(util.Arrays.asList("tank"))
  19. val system = akka.actor.ActorSystem("system")
  20. system.scheduler.schedule(0 seconds, 30 seconds)(tankTest.saveData(args,consumer))
  21. }
  22. object tankTest {
  23. def saveData(args: Array[String],consumer: KafkaConsumer[String,String]): Unit = {
  24. val records: ConsumerRecords[String, String] = consumer.poll(Duration.ofSeconds(3))
  25. if (!records.isEmpty) {
  26. for (record <- records) {
  27. if (record.value != null && !record.value.equals("")) {
  28. myLog.syncLog(record.value + "\t准备开启消费者出列数据", "kafka", "get")
  29. }
  30. }
  31. consumer.commitSync()
  32. }
  33. }
  34. }
  35. }

kafka auto.offset.reset参数解析的更多相关文章

  1. Kafka auto.offset.reset

    要从头消费kafka的数据,可以通过以下参数: Kafka auto.offset.reset = earliest

  2. kafka之consumer参数auto.offset.reset 0.10+

    https://blog.csdn.net/dingding_ting/article/details/84862776 https://blog.csdn.net/xianpanjia4616/ar ...

  3. kafka的auto.offset.reset详解与测试

    1. 取值及定义 auto.offset.reset有以下三个可选值: latest (默认) earliest none 三者均有共同定义: 对于同一个消费者组,若已有提交的offset,则从提交的 ...

  4. Kafka 0.8 配置参数解析

    http://kafka.apache.org/documentation.html#configuration   Broker Configs 4个必填参数, broker.id Each bro ...

  5. kafka_2.11-0.10.2.1中的auto.offset.reset

    在使用spark连接kafka消费topic时,发现无论怎么设置,也无法从头开始消费. 查看配置得出auto.offset.reset的以下3种设置及含义: earliest 当各分区下有已提交的of ...

  6. kafka Auto offset commit faild reblance

    今天在使用python消费kafka时遇到了一些问题, 特记录一下. 场景一. 特殊情况: 单独写程序只用来生产消费数据 开始时间: 10:42 Topic: t_facedec Partition: ...

  7. Kafka单线程Consumer及参数详解

    请使用0.9以后的版本: 示例代码 Properties props = new Properties(); props.put("bootstrap.servers", &quo ...

  8. 「Kafka」Kafka中offset偏移量提交

    在消费Kafka中分区的数据时,我们需要跟踪哪些消息是读取过的.哪些是没有读取过的.这是读取消息不丢失的关键所在. Kafka是通过offset顺序读取事件的.如果一个消费者退出,再重启的时候,它知道 ...

  9. kafka 客户端 consumer 配置参数

    1.Consumer Group 与 topic 订阅 每个Consumer 进程都会划归到一个逻辑的Consumer Group中,逻辑的订阅者是Consumer Group.所以一条message ...

随机推荐

  1. sprignAOP那些术语

    那些AOP术语 初看这么多术语,一下子都不好接受,慢慢来,很快就会搞懂.通知.增强处理(Advice) 就是你想要的功能,也就是上说的安全.事物.日志等.你给先定义好,然后再想用的地方用一下.包含As ...

  2. 各个JDK版本新语法糖

    java5语法扩充 自动装箱.泛型.动态注解.枚举.可变长参数.循环遍历等语法 JDK7 fork/join jdk8  二进制数的原生支持.switch语句中支持string <>操作符 ...

  3. 风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击

    风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击 XSS钓鱼攻击 HTTP Basic Authentication认证 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候 ...

  4. 【原创】中断子系统-ARM GPIO中断处理流程

    目录 第一部分 GIC中断控制器的注册 1. GIC驱动分析 2.GIC驱动流程分析 第二部分 device node转化为platform_device 第三部分:platform_device注册 ...

  5. TensorFlow中数据读取—如何载入样本

    考虑到要是自己去做一个项目,那么第一步是如何把数据导入到代码中,何种形式呢?是否需要做预处理?官网中给的实例mnist,数据导入都是写好的模块,那么自己的数据呢? 一.从文件中读取数据(CSV文件.二 ...

  6. springboot源码解析-管中窥豹系列之排序(五)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...

  7. Mac上“您没有权限来打开应用程序”(Big Sur)

    最近电脑更新了Macos的最新11版大苏尔 Big Sur.很快问题就出现了:安装某个软件的时候Key Gen打不开,提示您没有权限来打开应用程序,类似这样:https://zhuanlan.zhih ...

  8. SQL语句中 ` 的作用

    SQL语句中 ` 的作用 做攻防世界WEB区 supersqli 题目,在构建SQL语句时,遇到SQL语句中有 ` 时可以解析,没有则不能. 查阅资料得知,` 通常用来说明其中的内容是数据库名.表名. ...

  9. 删除开发账号的ACCESS KEY

    大家都知道,当申请一个开发账号来开发程序的时候需要一个ACCESS key,这个key我们可以通过系统管理员在OSS上注册, 也可以通过一些软件来计算,比如zapgui.EXE,但是当用软件注册完,不 ...

  10. 高效率同步降压变换器,24V转3.3V降压芯片

    PW2312是一个高频,同步,整流,降压,开关模式转换器与内部功率MOSFET.它提供了一个非常紧凑的解决方案,以实现1.5A的峰值输出电流在广泛的输入电源范围内,具有良好的负载和线路调节. PW23 ...