我想管理Kafka主题以及数据库中的偏移量,这样如果我想在某个点之后在队列中重新处理,我可以。我该如何处理?提前谢谢。
答案 0 :(得分:0)
鉴于PartitionInfo,您应该能够告诉您的消费者{C}}或seekToBeginning
该分区中的偏移量。
ConsumerRecord知道它的主题,分区和偏移量。您可以在数据库中记录这些事实。
但是这里的问题是你的主题是否被分区。那么您的数据将按时间顺序排列。因此,如果您有两个分区并且基本上按姓氏分区,则字母表的前半部分的名称更改将是顺序的,而后半部分的名称更改将是顺序的,但是如何获得单个时间顺序视图并不明显名称在整个系统中发生变化。
但是,如果您为数据库中的特定更改记录了分区和偏移量,则可以寻找该分区并进行偏移并从该点重新处理流。
(如果您只有一个分区,这就变得无关紧要了,但是当您的主题或流式架构需要多个分区时,需要考虑这个问题)
从实际问题退回到理论中,我不确定你为什么要这样做,因为消费者群体会将你承诺的偏移记录到Kafka本身,因此如果你的流处理应用程序崩溃了你&#39能够从你离开的地方起飞而不用担心。如果您设置enable.auto.commit property,则此消息提交会自动发生,或者如果您在消费者上调用seek
,则可以手动控制此消息。或者你试图使用不可变数据存储(Kafka)作为一个可变商店,但这只是一个纯粹的猜测,基于你不是真正描述为什么的事实你想做你想做的事。