Flink对kafka消费的主代码
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import java.util.Properties;
public class KafkaConsumer {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = EnvUtil.getEnv();
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, KafkaConf.ADDRESS);
props.put(ConsumerConfig.GROUP_ID_CONFIG, KafkaConf.APP);
props.put(ConsumerConfig.CLIENT_ID_CONFIG, KafkaConf.APP);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
FlinkKafkaConsumer consumerInstance = new FlinkKafkaConsumer(KafkaConf.TOPIC, new SimpleStringSchema(), props);
consumerInstance.setCommitOffsetsOnCheckpoints(true);
SingleOutputStreamOperator source = env.addSource(consumerInstance).name("jingluohuanwanwu");
source.addSink(new SinkString())
.name("SinkStr");
env.execute("jingluohuanwanwu");
}
}
EnvUtil工具类
import org.apache.flink.streaming.api.CheckpointingMode;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
public class EnvUtil {
public static StreamExecutionEnvironment getEnv() {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(300_000, CheckpointingMode.EXACTLY_ONCE);
env.getCheckpointConfig().setCheckpointTimeout(600_000);
return env;
}
}
SinkString下沉组件类
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.streaming.api.functions.sink.SinkFunction;
@Slf4j
public class SinkString implements SinkFunction<String> {
@Override
public void invoke(String value, Context context) throws Exception {
log.info("sink print:" + value);
}
}
KafkaConf工具类
public class KafkaConf {
public final static String TOPIC = "xxx";
public final static String APP = "xxx";
public final static String ADDRESS = "test-nameserver:50088";
}