基于Flink CDC实现实时数据采集(二)-Source实现
Kafka Source实现
public class CustomKafkaSource extends AbstractSource<KafkaSource> {
OffsetsInitializer getStartupOption(BaseConnect connect) {
switch(connect.getStartupMode()) {
case LATEST_OFFSET:
return OffsetsInitializer.latest();
case EARLIEST_OFFSET:
return OffsetsInitializer.earliest();
case TIMESTAMP:
return OffsetsInitializer.timestamp(connect.getStartupTimestampMillis());
default:
return null;
}
}
@Override
public KafkaSource getSource(BaseTaskParams params) {
BaseConnect paramsConnect = params.getConnect();
String topic = paramsConnect.getTopic();
return KafkaSource.<String>builder()
.setTopicPattern(Pattern.compile(topic))
.setBootstrapServers(paramsConnect.getBootstrapServer())
.setStartingOffsets(getStartupOption(paramsConnect))
.setGroupId(paramsConnect.getGroupId())
.setDeserializer(new KafkaRecordDeserializationSchema<String>() {
@Override
public void deserialize(ConsumerRecord<byte[], byte[]> record, Collector<String> out) throws IOException {
String topic = record.topic();
String value = new String(record.value());
String key = record.key() == null ? "" : new String(record.key())