Apache storm 卡夫卡风暴喷口改变了拓扑结构,消耗了旧的偏移量

Apache storm 卡夫卡风暴喷口改变了拓扑结构,消耗了旧的偏移量,apache-storm,apache-kafka,Apache Storm,Apache Kafka,我用卡夫卡壶嘴来消费信息。但是,如果我必须更改拓扑并上传,那么它将从旧消息恢复还是从新消息开始?卡夫卡喷口向specity提供了从何处消费的时间戳,但我如何知道时间戳?spoutConfig.forceStartOffsetTime(-1) 它将选择围绕该时间戳写入的最新偏移量开始使用。你可以 通过传入-1,强制喷口始终从最新偏移开始,然后可以强制 它需要从最早的偏移量开始,传入-2 如果使用KafkaSpout,请确保: 在您的spootConfig中,“id”和“zkroot”在 重新部署新

我用卡夫卡壶嘴来消费信息。但是,如果我必须更改拓扑并上传,那么它将从旧消息恢复还是从新消息开始?卡夫卡喷口向specity提供了从何处消费的时间戳,但我如何知道时间戳?

spoutConfig.forceStartOffsetTime(-1)

它将选择围绕该时间戳写入的最新偏移量开始使用。你可以 通过传入-1,强制喷口始终从最新偏移开始,然后可以强制 它需要从最早的偏移量开始,传入-2


如果使用KafkaSpout,请确保:

  • 在您的spootConfig中,“id”和“zkroot”在 重新部署新版本的拓扑。Storm使用“ zkroot,“id”将主题偏移量存储到zookeeper中
  • Kafkanconfig.forceFromStart设置为false
  • KafkaSpout将偏移量存储到zookeeper中。在重新部署期间,如果在KafkaSpout的KafkanConfig中将forceFromStart设置为true(首次部署拓扑时可能会出现这种情况),则会忽略存储的zookeeper偏移量。请确保将其设置为false


    请考虑编写拓扑,以便在执行拓扑的main()方法时从属性文件中读取kafkanconfig.forceFromStart值。这将允许管理员控制是否重播Kafka消息。

    基本上,事件顺序为:

  • 第一次从以下属性开始读取拓扑:

    forceFromStart = true
    
    startOffsetTime = -2
    
  • 上面的道具将强制它从主题的开头开始。记住要有这两个属性,因为
    forceFromStart
    告诉storm读取
    startOffsetTime
    属性,并使用设置为确定从何处开始读取的值,并忽略zookeeper偏移

    从现在起,拓扑将运行,zookeeper将保持偏移量。如果您的工作人员死亡,它将由主管启动,并开始读取zookeeper中的偏移量

  • 现在,如果要重新启动拓扑,并且要从关机前停止的位置读取拓扑,请使用以下属性并重新启动拓扑:

    forceFromStart = false
    
    forceFromStart = true
    
    startOffsetTime = -1
    
  • 通过上述属性,您告诉storm不要读取
    startOffsetTime
    值,而是使用zookeeper偏移量,该偏移量在您关闭拓扑之前已维护

    从现在起,每次重新启动拓扑时,它都会从原来的位置读取

  • 如果要重新启动拓扑,并且要从主题的开头/顶部读取,请使用以下属性并重新启动拓扑:

    forceFromStart = false
    
    forceFromStart = true
    
    startOffsetTime = -1
    
  • 通过上述属性,您告诉storm忽略zookeeper偏移,并从最新的偏移开始,这是本主题的提示