在 run() 中调用另一个 SourceFunction 的 run()?

时间:2021-03-11 13:17:10

标签: apache-flink flink-streaming

为了解决 FLINK-2491,我试图链接 SourceFunction 以便在第一个退出时不会受到伤害。基本思路如下:

class WrappingSourceFunction(innerSourceFunction: SourceFunction[Inner]) extends SourceFunction[Outer] {
  override def run(outerCtx: SourceContext[Outer]): Unit = {
    outerCtx.collect(...)


    val innerCtx: SourceContext[Inner] = new SourceContextWrapper(outerCtx)
    innerSourceFunction.run(innerCtx)
  }

  override def cancel() = innerSourceFunction.cancel()
}

可以在 run() 内调用不同 SourceFunctionrun() 并实现我自己的 SourceContext 委托给另一个吗?它适用于在本地 Flink 环境中运行的小型测试,但我想知道在生产中这样做是否会出现任何问题。

0 个答案:

没有答案
相关问题