noRestart
flink默认,不会重启
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment();
streamEnv.setRestartStrategy(RestartStrategies.noRestart());//默认的设置,不重启任务
DataStreamSource<Tuple3<String, Integer, Long>> sourceData = streamEnv.addSource(new SourceFunction<Tuple3<String, Integer, Long>>() {
@Override
public void run(SourceContext<Tuple3<String, Integer, Long>> sourceContext) throws Exception {
int index = 1;
while (true) {
sourceContext.collect(new Tuple3<>("key", index++, System.currentTimeMillis()));
Thread.sleep(100);
}
}
@Override
public void cancel() {}
});
sourceData.map(new MapFunction<Tuple3<String, Integer, Long>, String>() {
@Override
public String map(Tuple3<String, Integer, Long> item) throws Exception {
//根据一定条件抛出异常
if(item.f1 % 5 == 0){
throw new Exception(String.format("数据%d出错",item.f1));
}
return item.toString();
}
}).print();
streamEnv.execute();
}
fixedDelayRestart
固定允许重启次数,延迟重启
....
//固定允许重启次数,延迟重启
streamEnv.setRestartStrategy(RestartStrategies.fixedDelayRestart(2, Time.seconds(3)));
....
failureRateRestart
允许时间内重启次数,延迟重启
....
//2秒内如果出错超过两次就停止,否则会一直重启
streamEnv.setRestartStrategy(RestartStrategies.failureRateRestart(2,Time.milliseconds(2000),Time.milliseconds(100)));
....
启动checkPoint
....
//启动checkpoint默认是自动重启
streamEnv.enableCheckpointing(10000);//10秒会自动进行一次checkpoint
....