Source
從源碼中學習例子
Kafka實現
類結構
RMQ實現
從上面兩個實現來看,主要實現了以下接口
SourceFunction source接口
RichFunction 取到上下文的一些信息
CheckpointedFunction 完成checkpoint功能
CheckpointListener checkpoint監聽器
自定義Source
實現這上面的幾個接口
public class TestSourceFuncitonn implements SourceFunction, CheckpointedFunction, CheckpointListener, RichFunction {
public TestSourceFuncitonn() {
}
@Override
public void run(SourceContext ctx) throws Exception {
//主要實現這個,發送數據,比如kafka這裏實現就是去消費數據從kafka裏,再
//發送
sourceContext.collectWithTimestamp(record, timestamp);
}
@Override
public void cancel() {
//對source做取消
}
@Override
public void snapshotState(FunctionSnapshotContext context) throws Exception {
//kafka實現,保存offset
}
@Override
public void initializeState(FunctionInitializationContext context) throws Exception {
}
@Override
public void notifyCheckpointComplete(long checkpointId) throws Exception {
//可以提交offset了
}
@Override
public void open(Configuration parameters) throws Exception {
}
@Override
public void close() throws Exception {
}
@Override
public RuntimeContext getRuntimeContext() {
return null;
}
@Override
public IterationRuntimeContext getIterationRuntimeContext() {
return null;
}
@Override
public void setRuntimeContext(RuntimeContext t) {
}
}