不确定我对这个问题的理解是否正确:
使用KafkaUtils.createStream()
,程序本身就是一个被动接收数据的使用者。由于Kafka
仅保留自己的偏移量,因此Kafka
不知道程序在哪里消费。
因此,如果Kafka
发生故障,它可能会重新发送已发送到接收方的数据,从而导致数据重复。
尽管使用KafkaUtils.createDirectStream()
,程序本身直接使用内部Kafka
分区,所以它知道它在哪里使用,无论它本身还是Kafka
失败,它都可以从正确的位置。
我想确认我的理解是否正确。任何帮助表示赞赏。