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