checkPoint代码验证一之offset管理

352 阅读1分钟
consumer.setCommitOffsetsOnCheckpoints(false);
注意:true是默认,我们先将其改为false验证

第一次:

打包后,两种方式上线

1 bin/flink run -c com.xx.data.xx.test.TestOrderMain /root/software/data2.jar

正常启动后,会消费kafka的最新一条之前未消费的数据A,并且mongdb库也有了这条数据的统计信息,然后点击页面的cancle按钮,接着进行第2)步

2 bin/flink run -c com.xx.data.xx.test.TestOrderMain /root/software/data2.jar,我们继续用此命令正常启动job,发现还是会消费kafka的最新消息A,然后仍然会插入到mongdb库中,然后点击页面的cancle按钮,接着进行第3)步
3 bin/flink run -s /root/data/flink-1.7.2/chk/8ec767f72ae319aa1bda0d4f876953eb/chk-3/_metadata -c com.xx.data.xx.test.TestOrderMain /root/software/data2.jar,我们换种方式,用checkpoint启动,会发现尽然不消费这条A信息了,说明kafka offset的信息存储在chk中,但是没有提交给kafka

第二次:

我们将 consumer.setCommitOffsetsOnCheckpoints(false); 改为 consumer.setCommitOffsetsOnCheckpoints(true);

打包后,两种方式上线

1 bin/flink run -c com.xx.data.xx.test.TestOrderMain /root/software/data2.jar

正常启动后,会消费kafka的最新一条之前未消费的数据A,并且mongdb库也有了这条数据的统计信息,然后点击页面的cancle按钮,接着进行第2)步

2 bin/flink run -c com.xx.data.xx.test.TestOrderMain /root/software/data2.jar,我们继续用此命令正常启动job,发现不会消费kafka的最新消息A,说明offset的信息已经被kafka接收到了,然后点击页面的cancle按钮,接着进行第3)步
3 bin/flink run -s /root/data/flink-1.7.2/chk/8ec767f72ae319aa1bda0d4f876953eb/chk-3/_metadata -c com.xx.data.xx.test.TestOrderMain /root/software/data2.jar,我们换种方式,用checkpoint启动,会发现也不会消费这条A信息,说明kafka offset的信息存储在chk中,并且提交给kafka了