SuperAPI AI 工具集

authoring-java-sdk-tasks

编程与开发

查看项目

更新于 10-15 17:20

技能介绍

用途:用 Java、Kotlin 等 JVM 语言通过 Airflow Java SDK 实现 Airflow 任务逻辑。DAG 仍留在 Python,每个任务实例在一个短生命周期 JVM 子进程中运行;Java 任务需与不携带逻辑的 Python @task.stub 配对,DAG ID 与任务 ID 必须和 Java 注解完全一致。共享模型(Python stub 模式、ID 匹配、XCom-as-JSON 契约)见 authoring-language-sdk-tasks。

主要能力:提供两种 API,运行行为相同且可混用。注解式 API 用 @Builder.Dag、@Builder.Task、@Builder.XCom 标注普通类,编译期由注解处理器生成 <ClassName>Builder;方法返回值自动作为 return_value XCom 推送,未捕获异常使任务失败并触发重试。接口式 API 直接实现 Task,在 execute(Context, Client) 中手动 setXCom,并通过 BundleBuilder 的 Dag.addTask 注册。

必要用法:入口类实现 BundleBuilder 并在 main 中调用 Server.create(args).serve(...),由 SDK 服务器连接协调器、运行一个任务实例后退出;连接信息由 Airflow 通过命令行传入,不要手工构造。任务内通过 Client 读取连接、变量与 XCom(getConnection、getVariable、getXCom、setXCom),通过 Context 获取 dagRun 与 ti(含 tryNumber)等元数据。日志用静态 System.Logger;要进入 Airflow 任务日志需在 bundle 中包含 SDK 日志集成构件之一:airflow-sdk-jpl、airflow-sdk-slf4j、airflow-sdk-log4j2 或 airflow-sdk-jul。

类型与限制:XCom 以 JSON 跨界传递,读回类型为 Long/BigInteger、Double、String、Boolean、null、List<Object>、Map<String, Object>,@Builder.XCom 参数类型须匹配,否则运行期失败;getVariable、getXCom 返回 Object,需按 JSON 类型显式强制转换。每个 Task 类需公共无参构造;同一 DAG 内任务 ID 唯一,同一 bundle 内 DAG ID 唯一。注解式 API 需在构建中配置注解处理器,接口式不需要。Java SDK 为预览版,构件坐标和 API 可能变动。完整可运行示例位于 SDK 仓库 java-sdk/example/。构建设置、JAR 打包与队列路由见 deploying-java-sdk-bundles 与 configuring-airflow-language-sdks。