REST API 指南
本节介绍了 Spring Cloud 数据流 REST API。
42. 概述
Spring Cloud Data Flow 提供了一个 REST API,让你能够访问服务器的各个方面。 事实上,Spring Cloud Data Flow shell 是该 API 的一流消费者。
如果你打算在 Java 上使用 REST API,建议使用
提供的 Java 客户端(DataflowTemplate)内部使用 REST API。 |
42.1. HTTP 版本
Spring Cloud Data Flow 建立了 RESTful API 版本,当 API 发生重大变更时会更新。 API 版本可在 Spring Cloud Data Flow 首页末尾查看,如下示例所示:
{
"_links": {
"dashboard": { "href" : "http://localhost:9393/dashboard" },
...
},
"api.revision":15
}
下表展示了SCDF发布版本及其当前的RESTful API版本。
| SCDF版本 | API 版本 |
|---|---|
2.11.x |
14 |
2.10.x |
14 |
2.9.x |
14 |
2.8.x |
14 |
2.7.x |
14 |
42.2. HTTP 动词
Spring Cloud Data Flow 尽量遵循标准 HTTP 和 REST 的 HTTP 动词约定,具体如下表所述:
| 动词 | 用法 |
|---|---|
|
用于检索资源。 |
|
用来创建新资源。 |
|
用于更新现有资源,包括部分更新。也用于
这些资源蕴含了 |
|
用来删除现有资源。 |
42.3. HTTP 状态码
Spring Cloud Data Flow 尽量遵循标准 HTTP 和 REST 的 HTTP 状态代码约定,如下表所示:
| 状态代码 | 用法 |
|---|---|
|
请求成功完成。 |
|
一项新资源已成功创建。该资源的URI可从回复中获取 |
|
已成功应用现有资源的更新。 |
|
请求形式错误。响应体包含错误描述,提供更多信息。 |
|
请求的资源并不存在。 |
|
请求的资源已经存在。例如,任务已经存在,或者流已经部署中 |
|
在无法停止或重启作业执行的情况下返回。 |
42.5. 错误
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
发生的HTTP错误,例如: |
|
|
错误原因描述 |
|
|
请求被提出的路径 |
|
|
HTTP 状态码,例如 |
|
|
错误发生的时间(以毫秒计) |
42.6. 超媒体
Spring Cloud 数据流使用超媒体,资源包含其他资源链接
在他们的回应中。
响应采用超文本应用格式,格式为资源对资源语言(HAL)。
链接可在_链接钥匙。
API用户不应自行创建URI。
相反,他们应使用上述链接进行导航。
43. 资源
该 API 包含以下资源:
43.1. 索引
该索引提供了进入 Spring Cloud Data Flow REST API 的入口。 以下主题提供更多细节:
43.1.1. 访问索引
使用一个获取请求访问索引。
响应结构
| 路径 | 类型 | 描述 |
|---|---|---|
|
|
其他资源链接 |
|
|
每次在该REST API中实现变更时,都会递增 |
|
|
审计记录链接 |
|
|
仪表盘链接 |
|
|
模式/版本链接 |
|
|
模式/目标链接 |
|
|
链接至流/定义 |
|
|
链接至流/定义/定义 |
|
|
链接流/定义/定义都是模板化的 |
|
|
运行时/应用链接 |
|
|
链接到 runtime/apps/{appId} |
|
|
链接运行时/应用是模板化的 |
|
|
链接到 runtime/apps/{appId}/instances |
|
|
Link runtime/apps/{appId}/instances 是模板化的 |
|
|
链接到 runtime/apps/{appId}/instances/{instanceId} |
|
|
Link runtime/apps/{appId}/instances/{instanceId} 是模板化的 |
|
|
链接到 runtime/apps/{appId}/instances/{instanceId}/post |
|
|
Link runtime/apps/{appId}/instances/{instanceId}/post is templated |
|
|
链接到 runtime/apps/{appId}/instances/{instanceId}/actuator |
|
|
Link runtime/apps/{appId}/instances/{instanceId}/actuator is templated |
|
|
运行时/流的链接 |
|
|
链路运行时/流是模板化的 |
|
|
链接到运行时/streams/{streamNames} |
|
|
Link runtime/streams/{streamNames} 是模板化的 |
|
|
链接到流/日志 |
|
|
链接到流/日志/{streamName} |
|
|
链接到streams/logs/{streamName}/{appName} |
|
|
链接流/日志/{streamName}是模板化的 |
|
|
Link streams/logs/{streamName}/{appName} 是模板化的 |
|
|
链接到流/部署 |
|
|
链接到流/部署 |
|
|
链接流/部署/{name} 是模板化的 |
|
|
链接流/部署/{name} 是模板化的 |
|
|
链接流/部署/{name} 是模板化的 |
|
|
链接流/部署/{name} 是模板化的 |
|
|
链接流/部署/{name} 是模板化的 |
|
|
链接到流/部署/部署 |
|
|
链路流/部署/部署都是模板化的 |
|
|
链接到streams/deployments/manifest/{name}/{version} |
|
|
Link streams/deployments/manifest/{name}/{version} 是模板化的 |
|
|
链接到流/部署/历史/{name} |
|
|
链路流/部署/历史是模板化的 |
|
|
链接到streams/deployments/rollback/{name}/{version} |
|
|
链接流/部署/回滚/{name}/{version} 是模板化的 |
|
|
链接到streams/deployments/update/{name} |
|
|
链接流/部署/更新/{name}是模板化的 |
|
|
链接到流/部署/平台/列表 |
|
|
链接到streams/deployments/scale/{streamName}/{appName}/instances/{count} |
|
|
Link streams/deployments/scale/{streamName}/{appName}/instances/{count} 是模板化的 |
|
|
链接到流/验证 |
|
|
链接流/验证是模板化的 |
|
|
任务/平台链接 |
|
|
任务/定义链接 |
|
|
任务/定义/定义链接 |
|
|
链接任务/定义/定义都是模板化的 |
|
|
任务/执行链接 |
|
|
任务/执行/启动链接 |
|
|
表示链接任务/执行/启动是模板化的 |
|
|
任务/执行/名称链接 |
|
|
链接任务/执行/名称是模板化的 |
|
|
任务/执行/当前链接 |
|
|
任务/执行/执行链接 |
|
|
链接任务/执行/执行是模板化的 |
|
|
任务/执行/外部链接 |
|
|
链接任务/执行/外部任务是模板化的 |
|
|
任务/信息/执行链接 |
|
|
链接任务/信息是模板化的 |
|
|
任务/日志链接 |
|
|
链接任务/日志是模板化的 |
|
|
任务/薄执行链接 |
|
|
任务/执行/计划链接 |
|
|
任务/计划/实例链接 |
|
|
链接任务/计划/实例是模板化的 |
|
|
任务/验证链接 |
|
|
链接任务/验证是模板化的 |
|
|
工作/执行链接 |
|
|
指向作业/瘦执行的链接 |
|
|
作业/执行/名称链接 |
|
|
链接作业/执行/名称都是模板化的 |
|
|
指向作业/执行/状态的链接 |
|
|
链接作业/执行/状态是模板化的 |
|
|
任务/thinexecutions/名称链接 |
|
|
链接作业/执行/名称都是模板化的 |
|
|
指向 jobs/thinexecutions/jobInstanceID 的链接 |
|
|
链接作业/执行/jobInstanceId是模板化的 |
|
|
指向 jobs/thinexecutions/taskExecutionId 的链接 |
|
|
链接作业/执行/任务执行ID是模板化的 |
|
|
指向作业/执行/执行的链接 |
|
|
链接作业/执行/执行都是模板化的 |
|
|
指向作业/执行/执行/步骤的链接 |
|
|
链接作业/执行/执行/步骤都是模板化的 |
|
|
指向作业/执行/执行/步骤的链接 |
|
|
链接作业/执行/执行/步骤/步骤都是模板化的 |
|
|
指向作业/执行/执行/步骤/步/进度的链接 |
|
|
链接作业/执行/执行/步骤/步/进度都是模板化的 |
|
|
职位/实例/名称链接 |
|
|
链接作业/实例/名称是模板化的 |
|
|
工作/实例/实例链接 |
|
|
链接作业/实例/实例是模板化的 |
|
|
工具链接/解析任务文本图谱 |
|
|
工具链接/convertTaskGraphToText |
|
|
应用链接 |
|
|
关于 |
|
|
完成/流程链接 |
|
|
链接补全/流是模板化的 |
|
|
完成任务链接 |
|
|
链接完成/任务是模板化的 |
示例回应
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 8220
{
"_links" : {
"dashboard" : {
"href" : "http://localhost:9393/dashboard"
},
"audit-records" : {
"href" : "http://localhost:9393/audit-records"
},
"schema/versions" : {
"href" : "http://localhost:9393/schema/versions"
},
"schema/targets" : {
"href" : "http://localhost:9393/schema/targets"
},
"streams/definitions" : {
"href" : "http://localhost:9393/streams/definitions"
},
"streams/definitions/definition" : {
"href" : "http://localhost:9393/streams/definitions/{name}",
"templated" : true
},
"streams/validation" : {
"href" : "http://localhost:9393/streams/validation/{name}",
"templated" : true
},
"runtime/streams" : {
"href" : "http://localhost:9393/runtime/streams{?names}",
"templated" : true
},
"runtime/streams/{streamNames}" : {
"href" : "http://localhost:9393/runtime/streams/{streamNames}",
"templated" : true
},
"runtime/apps" : {
"href" : "http://localhost:9393/runtime/apps"
},
"runtime/apps/{appId}" : {
"href" : "http://localhost:9393/runtime/apps/{appId}",
"templated" : true
},
"runtime/apps/{appId}/instances" : {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances",
"templated" : true
},
"runtime/apps/{appId}/instances/{instanceId}" : {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}",
"templated" : true
},
"runtime/apps/{appId}/instances/{instanceId}/actuator" : [ {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}/actuator?endpoint={endpoint}",
"templated" : true
}, {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}/actuator",
"templated" : true
} ],
"runtime/apps/{appId}/instances/{instanceId}/post" : {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}/post",
"templated" : true
},
"streams/deployments" : {
"href" : "http://localhost:9393/streams/deployments"
},
"streams/deployments/{name}{?reuse-deployment-properties}" : {
"href" : "http://localhost:9393/streams/deployments/{name}?reuse-deployment-properties=false",
"templated" : true
},
"streams/deployments/{name}" : {
"href" : "http://localhost:9393/streams/deployments/{name}",
"templated" : true
},
"streams/deployments/history/{name}" : {
"href" : "http://localhost:9393/streams/deployments/history/{name}",
"templated" : true
},
"streams/deployments/manifest/{name}/{version}" : {
"href" : "http://localhost:9393/streams/deployments/manifest/{name}/{version}",
"templated" : true
},
"streams/deployments/platform/list" : {
"href" : "http://localhost:9393/streams/deployments/platform/list"
},
"streams/deployments/rollback/{name}/{version}" : {
"href" : "http://localhost:9393/streams/deployments/rollback/{name}/{version}",
"templated" : true
},
"streams/deployments/update/{name}" : {
"href" : "http://localhost:9393/streams/deployments/update/{name}",
"templated" : true
},
"streams/deployments/deployment" : {
"href" : "http://localhost:9393/streams/deployments/{name}",
"templated" : true
},
"streams/deployments/scale/{streamName}/{appName}/instances/{count}" : {
"href" : "http://localhost:9393/streams/deployments/scale/{streamName}/{appName}/instances/{count}",
"templated" : true
},
"streams/logs" : {
"href" : "http://localhost:9393/streams/logs"
},
"streams/logs/{streamName}" : {
"href" : "http://localhost:9393/streams/logs/{streamName}",
"templated" : true
},
"streams/logs/{streamName}/{appName}" : {
"href" : "http://localhost:9393/streams/logs/{streamName}/{appName}",
"templated" : true
},
"tasks/platforms" : {
"href" : "http://localhost:9393/tasks/platforms"
},
"tasks/definitions" : {
"href" : "http://localhost:9393/tasks/definitions"
},
"tasks/definitions/definition" : {
"href" : "http://localhost:9393/tasks/definitions/{name}",
"templated" : true
},
"tasks/executions" : {
"href" : "http://localhost:9393/tasks/executions"
},
"tasks/executions/external" : {
"href" : "http://localhost:9393/tasks/executions/external/{externalExecutionId}{?platform}",
"templated" : true
},
"tasks/executions/launch" : {
"href" : "http://localhost:9393/tasks/executions/launch?name={name}{&properties,arguments}",
"templated" : true
},
"tasks/executions/name" : {
"href" : "http://localhost:9393/tasks/executions{?name}",
"templated" : true
},
"tasks/executions/current" : {
"href" : "http://localhost:9393/tasks/executions/current"
},
"tasks/executions/execution" : {
"href" : "http://localhost:9393/tasks/executions/{id}{?schemaTarget}",
"templated" : true
},
"tasks/validation" : {
"href" : "http://localhost:9393/tasks/validation/{name}",
"templated" : true
},
"tasks/info/executions" : {
"href" : "http://localhost:9393/tasks/info/executions{?completed,name,days}",
"templated" : true
},
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/{taskExternalExecutionId}{?platformName,schemaTarget}",
"templated" : true
},
"tasks/thinexecutions" : {
"href" : "http://localhost:9393/tasks/thinexecutions"
},
"tasks/schedules" : {
"href" : "http://localhost:9393/tasks/schedules"
},
"tasks/schedules/instances" : {
"href" : "http://localhost:9393/tasks/schedules/instances/{taskDefinitionName}",
"templated" : true
},
"jobs/executions" : {
"href" : "http://localhost:9393/jobs/executions"
},
"jobs/executions/name" : {
"href" : "http://localhost:9393/jobs/executions{?name}",
"templated" : true
},
"jobs/executions/status" : {
"href" : "http://localhost:9393/jobs/executions{?status}",
"templated" : true
},
"jobs/executions/execution" : {
"href" : "http://localhost:9393/jobs/executions/{id}",
"templated" : true
},
"jobs/executions/execution/steps" : {
"href" : "http://localhost:9393/jobs/executions/{jobExecutionId}/steps",
"templated" : true
},
"jobs/executions/execution/steps/step" : {
"href" : "http://localhost:9393/jobs/executions/{jobExecutionId}/steps/{stepId}",
"templated" : true
},
"jobs/executions/execution/steps/step/progress" : {
"href" : "http://localhost:9393/jobs/executions/{jobExecutionId}/steps/{stepId}/progress",
"templated" : true
},
"jobs/instances/name" : {
"href" : "http://localhost:9393/jobs/instances{?name}",
"templated" : true
},
"jobs/instances/instance" : {
"href" : "http://localhost:9393/jobs/instances/{id}",
"templated" : true
},
"tools/parseTaskTextToGraph" : {
"href" : "http://localhost:9393/tools"
},
"tools/convertTaskGraphToText" : {
"href" : "http://localhost:9393/tools"
},
"jobs/thinexecutions" : {
"href" : "http://localhost:9393/jobs/thinexecutions"
},
"jobs/thinexecutions/name" : {
"href" : "http://localhost:9393/jobs/thinexecutions{?name}",
"templated" : true
},
"jobs/thinexecutions/jobInstanceId" : {
"href" : "http://localhost:9393/jobs/thinexecutions{?jobInstanceId}",
"templated" : true
},
"jobs/thinexecutions/taskExecutionId" : {
"href" : "http://localhost:9393/jobs/thinexecutions{?taskExecutionId}",
"templated" : true
},
"apps" : {
"href" : "http://localhost:9393/apps"
},
"about" : {
"href" : "http://localhost:9393/about"
},
"completions/stream" : {
"href" : "http://localhost:9393/completions/stream{?start,detailLevel}",
"templated" : true
},
"completions/task" : {
"href" : "http://localhost:9393/completions/task{?start,detailLevel}",
"templated" : true
}
},
"api.revision" : 14
}
链接
索引的主要元素是链接,因为它们让你可以遍历 API 并执行所需的功能:
| 关系 | 描述 |
|---|---|
|
访问元信息,包括启用功能、安全信息、版本信息 |
|
访问仪表盘界面 |
|
提供审计跟踪信息 |
|
处理注册应用 |
|
暴露了Stream的DSL补全功能 |
|
暴露任务的DSL完成功能 |
|
提供 JobExecution 资源 |
|
提供 JobExecution 薄资源,不包含任何步骤执行 |
|
提供特定作业执行的详细信息 |
|
提供 JobExecution 的步骤 |
|
返回特定步骤的详细信息 |
|
提供特定步骤的进展信息 |
|
按作业名称检索作业执行 |
|
按作业状态检索作业执行 |
|
通过作业名称检索作业执行,不包含步骤执行 |
|
按作业实例ID检索作业执行,但不包含步执行 |
|
通过任务执行ID检索作业执行,不包含步执行 |
|
为特定工作实例提供作业实例资源 |
|
提供特定作业名称的作业实例资源 |
|
暴露流运行状态 |
|
暴露给定流名称的流运行状态 |
|
提供运行时应用资源 |
|
暴露特定应用的运行状态 |
|
提供应用实例的状态 |
|
提供特定应用实例的状态 |
|
实验性:允许在特定应用实例上调用执行器端点 |
|
实验性:允许在 HTTP sink 上进行 POST |
|
提供任务定义资源 |
|
提供特定任务定义的详细信息 |
|
提供任务定义的验证 |
|
返回任务执行 |
|
提供启动任务执行的功能 |
|
返回任务执行(外部ID) |
|
提供当前正在运行任务的数量 |
|
提供任务执行信息 |
|
提供任务的进度信息 |
|
提供特定任务的排班信息 |
|
返回给定任务名称下的所有任务执行 |
|
提供特定任务执行的详细信息 |
|
提供用于启动任务的平台账户。通过添加请求参数“schedulesEnabled=true”,结果可筛选支持调度的平台 |
|
检索任务应用日志 |
|
返回瘦任务执行 |
|
Spring Boot 相关模式列表 |
|
模式目标列表 |
|
暴露Streams资源 |
|
处理特定的流定义 |
|
提供流定义的验证 |
|
提供流部署作 |
|
请求流定义的部署信息 |
|
请求流定义的部署信息 |
|
请求(取消)部署现有流定义 |
|
返回发布版本的清单信息 |
|
获取Stream的部署历史,作为本版本的列表或发布 |
|
将流回滚到之前或特定版本的流 |
|
更新直播。 |
|
支持的部署平台列表 |
|
为选定流调整应用实例数量的缩减 |
|
检索流的应用日志 |
|
检索流的应用日志 |
|
获取流的特定应用日志 |
|
将任务定义解析为图结构 |
|
将图形格式转换为DSL文本格式 |
43.2. 服务器元信息
服务器元信息端点提供关于服务器本身的更多信息。以下主题提供更多细节:
43.2.1. 获取关于服务器的信息
一个获取请求返回春季云数据流的元信息,包括:
-
运行环境信息
-
关于哪些功能被启用的信息
-
Spring Cloud 数据流服务器的依赖信息
-
安全信息
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2635
{
"featureInfo" : {
"analyticsEnabled" : true,
"streamsEnabled" : true,
"tasksEnabled" : true,
"schedulesEnabled" : true,
"monitoringDashboardType" : "NONE"
},
"versionInfo" : {
"implementation" : {
"name" : "${info.app.name}",
"version" : "2.11.5"
},
"core" : {
"name" : "Spring Cloud Data Flow Core",
"version" : "2.11.5"
},
"dashboard" : {
"name" : "Spring Cloud Dataflow UI",
"version" : "3.4.6"
},
"shell" : {
"name" : "Spring Cloud Data Flow Shell",
"version" : "2.11.5",
"url" : "https://repo.maven.apache.org/maven2/org/springframework/cloud/spring-cloud-dataflow-shell/2.11.5/spring-cloud-dataflow-shell-2.11.5.jar"
}
},
"securityInfo" : {
"authenticationEnabled" : false,
"authenticated" : false,
"username" : null,
"roles" : [ ]
},
"runtimeEnvironment" : {
"appDeployer" : {
"deployerImplementationVersion" : "Test Version",
"deployerName" : "Test Server",
"deployerSpiVersion" : "2.11.5",
"javaVersion" : "1.8.0_422",
"platformApiVersion" : "",
"platformClientVersion" : "",
"platformHostVersion" : "",
"platformSpecificInfo" : {
"default" : "local"
},
"platformType" : "Skipper Managed",
"springBootVersion" : "2.7.18",
"springVersion" : "5.3.39"
},
"taskLaunchers" : [ {
"deployerImplementationVersion" : "unknown",
"deployerName" : "LocalTaskLauncher",
"deployerSpiVersion" : "unknown",
"javaVersion" : "1.8.0_422",
"platformApiVersion" : "Linux 6.5.0-1025-azure",
"platformClientVersion" : "6.5.0-1025-azure",
"platformHostVersion" : "6.5.0-1025-azure",
"platformSpecificInfo" : { },
"platformType" : "Local",
"springBootVersion" : "2.7.18",
"springVersion" : "5.3.39"
} ]
},
"monitoringDashboardInfo" : {
"url" : "",
"refreshInterval" : 15,
"dashboardType" : "NONE",
"source" : "default-scdf-source"
},
"gitAndBuildInfo" : {
"git" : {
"commit" : {
"time" : "2024-04-24T11:35:29Z",
"id" : {
"abbrev" : "fddafed",
"full" : "fddafed39b919981cbb5bd04bd7fb5266fa25309"
}
},
"branch" : "main"
},
"build" : {
"version" : "2.11.3-SNAPSHOT",
"artifact" : "spring-cloud-dataflow-server",
"name" : "Spring Cloud Data Flow Server",
"group" : "org.springframework.cloud",
"time" : "2024-04-25T12:36:37.169Z"
}
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/about"
}
}
}
43.3. 注册申请
注册应用端点提供关于已注册于 Spring Cloud 数据流服务器的应用程序的信息。以下主题提供更多细节:
43.3.1. 应用列表
一个获取请求列表列出了 Spring Cloud Data Flow 已知的所有应用程序。
以下主题提供更多细节:
请求结构
GET /apps?search=&type=source&defaultVersion=true&page=0&size=10&sort=name%2CASC HTTP/1.1
Accept: application/json
Host: localhost:9393
请求参数
| 参数 | 描述 |
|---|---|
|
对名称执行的搜索字符串(可选) |
|
限制退回的应用只和应用类型。其中一个是[应用、源代码、处理器、消耗器、任务] |
|
布尔标志设置为只检索默认版本的应用(可选) |
|
基于零的页码(可选) |
|
列表中的排序(可选) |
|
请求的页面大小(可选) |
示例请求
$ curl 'http://localhost:9393/apps?search=&type=source&defaultVersion=true&page=0&size=10&sort=name%2CASC' -i -X GET \
-H 'Accept: application/json'
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1151
{
"_embedded" : {
"appRegistrationResourceList" : [ {
"name" : "http",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:http-source-rabbit:1.2.0.RELEASE",
"version" : "1.2.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : [ "1.2.0.RELEASE" ],
"label" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps/source/http/1.2.0.RELEASE"
}
}
}, {
"name" : "time",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:time-source-rabbit:1.2.0.RELEASE",
"version" : "1.2.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : [ "1.2.0.RELEASE" ],
"label" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps/source/time/1.2.0.RELEASE"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps?page=0&size=10&sort=name,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.3.2. 获取特定应用的信息
一个获取请求/apps/<type>/<name>获取特定应用的信息。
以下主题提供更多细节:
示例请求
$ curl 'http://localhost:9393/apps/source/http?exhaustive=false' -i -X GET \
-H 'Accept: application/json'
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 382
{
"name" : "http",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:http-source-rabbit:1.2.0.RELEASE",
"version" : "1.2.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : null,
"label" : null,
"options" : [ ],
"shortDescription" : null,
"inboundPortNames" : [ ],
"outboundPortNames" : [ ],
"optionGroups" : { }
}
43.3.3. 注册新应用
一个发布请求/apps/<type>/<name>允许注册新的申请。
以下主题提供更多细节:
请求结构
POST /apps/source/http?bootVersion=2 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
uri=maven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE
请求参数
| 参数 | 描述 |
|---|---|
|
应用位所在的URI |
|
应用程序元数据jar所在的URI |
|
Spring Boot版本的应用程序。默认是2 |
|
如果已有相同名称和类型的注册存在,则必须成立,否则将发生错误 |
43.3.4. 注册新应用版本
一个发布请求/apps/<type>/<name>/<version>允许注册新的申请。
以下主题提供更多细节:
请求结构
POST /apps/source/http/1.1.0.RELEASE?bootVersion=2 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
uri=maven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE
请求参数
| 参数 | 描述 |
|---|---|
|
应用位所在的URI |
|
应用程序元数据jar所在的URI |
|
如果已有相同名称和类型的注册存在,则必须成立,否则将发生错误 |
|
Spring Boot版本。数值为2或3。必须提供超过2的。 |
路径参数
/apps/{type}/{name}/{version:.+}
| 参数 | 描述 |
|---|---|
|
注册应用类型。其中一个是[应用、源代码、处理器、消耗、任务](可选) |
|
注册申请名称 |
|
应用注册版本 |
43.3.5. 批量注册应用
一个发布请求/应用程序允许同时注册多个应用。
以下主题提供更多细节:
请求结构
POST /apps HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
apps=source.http%3Dmaven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE&force=false
示例请求
$ curl 'http://localhost:9393/apps' -i -X POST \
-d 'apps=source.http%3Dmaven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE&force=false'
响应结构
HTTP/1.1 201 Created
Content-Type: application/hal+json
Content-Length: 685
{
"_embedded" : {
"appRegistrationResourceList" : [ {
"name" : "http",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:http-source-rabbit:1.1.0.RELEASE",
"version" : "1.1.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : null,
"label" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps/source/http/1.1.0.RELEASE"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps?page=0&size=20"
}
},
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.3.6. 设置默认应用版本
对于具有相同需求的应用名称和类型,你可以注册多个版本。
在这种情况下,你可以选择其中一个版本作为默认应用。
以下主题提供更多细节:
43.4. 模式信息
模式信息端点提供关于任务和批处理应用支持的 Spring Boot 模式版本以及可用的模式目标的信息。
以下主题提供更多细节:
43.4.2. 列出所有模式目标
模式端点提供支持的模式目标列表。
以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 660
{
"defaultSchemaTarget" : "boot2",
"schemas" : [ {
"name" : "boot3",
"schemaVersion" : "3",
"taskPrefix" : "BOOT3_TASK_",
"batchPrefix" : "BOOT3_BATCH_",
"datasource" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/schema/targets/boot3"
}
}
}, {
"name" : "boot2",
"schemaVersion" : "2",
"taskPrefix" : "TASK_",
"batchPrefix" : "BATCH_",
"datasource" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/schema/targets/boot2"
}
}
} ],
"_links" : {
"self" : {
"href" : "http://localhost:9393/schema/targets"
}
}
}
43.5. 审计记录
审计记录端点提供关于审计记录的信息。以下主题提供更多细节:
43.5.1. 列出所有审计记录
审计记录端点允许您检索审计跟踪信息。
以下主题提供更多细节:
请求结构
GET /audit-records?page=0&size=10&operations=STREAM&actions=CREATE&fromDate=2000-01-01T00%3A00%3A00&toDate=2099-01-01T00%3A00%3A00 HTTP/1.1
Host: localhost:9393
请求参数
| 参数 | 描述 |
|---|---|
|
基于零的页码(可选) |
|
请求的页面大小(可选) |
|
逗号分隔的审计作列表(可选) |
|
逗号分隔的审计作列表(可选) |
|
来自日期过滤器(例如:2019-02-03T00:00:30)(可选) |
|
迄今为止的筛选(例如:2019-02-03T00:00:30)(可选) |
示例请求
$ curl 'http://localhost:9393/audit-records?page=0&size=10&operations=STREAM&actions=CREATE&fromDate=2000-01-01T00%3A00%3A00&toDate=2099-01-01T00%3A00%3A00' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 680
{
"_embedded" : {
"auditRecordResourceList" : [ {
"auditRecordId" : 5,
"createdBy" : null,
"correlationId" : "timelog",
"auditData" : "time --format='YYYY MM DD' | log",
"createdOn" : "2024-09-13T10:11:46.663Z",
"auditAction" : "CREATE",
"auditOperation" : "STREAM",
"platformName" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/audit-records/5"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/audit-records?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.5.2. 检索审计记录详情
审计记录端点允许你获得一个审计记录。以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 354
{
"auditRecordId" : 5,
"createdBy" : null,
"correlationId" : "timelog",
"auditData" : "time --format='YYYY MM DD' | log",
"createdOn" : "2024-09-13T10:11:45.673Z",
"auditAction" : "CREATE",
"auditOperation" : "STREAM",
"platformName" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/audit-records/5"
}
}
}
43.5.3. 列出所有审计行动类型
审计记录端点可以让你获取动作类型。以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1111
[ {
"id" : 100,
"name" : "Create",
"description" : "Create an Entity",
"nameWithDescription" : "Create (Create an Entity)",
"key" : "CREATE"
}, {
"id" : 200,
"name" : "Delete",
"description" : "Delete an Entity",
"nameWithDescription" : "Delete (Delete an Entity)",
"key" : "DELETE"
}, {
"id" : 300,
"name" : "Deploy",
"description" : "Deploy an Entity",
"nameWithDescription" : "Deploy (Deploy an Entity)",
"key" : "DEPLOY"
}, {
"id" : 400,
"name" : "Rollback",
"description" : "Rollback an Entity",
"nameWithDescription" : "Rollback (Rollback an Entity)",
"key" : "ROLLBACK"
}, {
"id" : 500,
"name" : "Undeploy",
"description" : "Undeploy an Entity",
"nameWithDescription" : "Undeploy (Undeploy an Entity)",
"key" : "UNDEPLOY"
}, {
"id" : 600,
"name" : "Update",
"description" : "Update an Entity",
"nameWithDescription" : "Update (Update an Entity)",
"key" : "UPDATE"
}, {
"id" : 700,
"name" : "SuccessfulLogin",
"description" : "Successful login",
"nameWithDescription" : "SuccessfulLogin (Successful login)",
"key" : "LOGIN_SUCCESS"
} ]
43.5.4. 列出所有审计作类型
审计记录端点允许你获取作类型。以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 315
[ {
"id" : 100,
"name" : "App Registration",
"key" : "APP_REGISTRATION"
}, {
"id" : 200,
"name" : "Schedule",
"key" : "SCHEDULE"
}, {
"id" : 300,
"name" : "Stream",
"key" : "STREAM"
}, {
"id" : 400,
"name" : "Task",
"key" : "TASK"
}, {
"id" : 500,
"name" : "Login",
"key" : "LOGIN"
} ]
43.6. 流定义
注册应用端点提供与 Spring Cloud 数据流服务器注册的流定义信息。以下主题提供更多细节:
43.6.1. 创建新的流定义
创建流定义是通过向流定义端点创建POST请求实现的。一个 curl 请求滴答滴答流可能类似于以下内容:
curl -X POST -d "name=ticktock&definition=time | log" localhost:9393/streams/definitions?deploy=false
流定义还可以包含额外的参数。例如,在“请求结构”示例中,我们还提供了日期-时间格式。
以下主题提供更多细节:
请求结构
POST /streams/definitions HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=timelog&definition=time+--format%3D%27YYYY+MM+DD%27+%7C+log&description=Demo+stream+for+testing&deploy=false
示例请求
$ curl 'http://localhost:9393/streams/definitions' -i -X POST \
-d 'name=timelog&definition=time+--format%3D%27YYYY+MM+DD%27+%7C+log&description=Demo+stream+for+testing&deploy=false'
响应结构
HTTP/1.1 201 Created
Content-Type: application/hal+json
Content-Length: 410
{
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "Demo stream for testing",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
}
43.6.2. 列出所有流定义
Streams 端点允许你列出所有流定义。以下主题提供了更多细节:
示例请求
$ curl 'http://localhost:9393/streams/definitions?page=0&sort=name%2CASC&search=&size=10' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 730
{
"_embedded" : {
"streamDefinitionResourceList" : [ {
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions?page=0&size=10&sort=name,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.6.3. 列出相关流定义
Streams 端点允许你列出相关的流定义。以下主题提供了更多细节:
请求结构
GET /streams/definitions/timelog/related?page=0&sort=name%2CASC&search=&size=10&nested=true HTTP/1.1
Host: localhost:9393
请求参数
| 参数 | 描述 |
|---|---|
|
我们是否应该递归地查找ByTaskNameConscontains 以获取相关的流定义(可选)? |
|
基于零的页码(可选) |
|
对名称执行的搜索字符串(可选) |
|
列表中的排序(可选) |
|
请求的页面大小(可选) |
示例请求
$ curl 'http://localhost:9393/streams/definitions/timelog/related?page=0&sort=name%2CASC&search=&size=10&nested=true' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 746
{
"_embedded" : {
"streamDefinitionResourceList" : [ {
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog/related?page=0&size=10&sort=name,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.6.4. 检索流定义细节
流定义端点允许你获得单一流定义。以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 387
{
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
}
43.6.5. 删除单个流定义
Streams 端点允许您删除单个流定义。(另见:删除所有流定义。)以下主题提供了更多细节:
43.8. 流式部署
部署定义端点提供已注册于Spring Cloud数据流服务器的部署信息。以下主题提供更多细节:
43.8.1. 部署流定义
流定义端点允许你部署单一流定义。可选地,你可以将应用参数作为请求体的属性传递。以下主题提供更多细节:
请求结构
POST /streams/deployments/timelog HTTP/1.1
Content-Type: application/json
Content-Length: 36
Host: localhost:9393
{"app.time.timestamp.format":"YYYY"}
/streams/deployments/{timelog}
| 参数 | 描述 |
|---|---|
|
现有流定义名称(必填) |
43.8.2. 取消部署流定义
流定义端点允许你取消部署单个流定义。以下主题提供了更多细节:
43.8.4. 部署流更新
多亏了 Skipper,你可以更新已部署的流,并提供额外的部署属性。
请求结构
POST /streams/deployments/update/timelog1 HTTP/1.1
Content-Type: application/json
Content-Length: 196
Host: localhost:9393
{"releaseName":"timelog1","packageIdentifier":{"repositoryName":"test","packageName":"timelog1","packageVersion":"1.0.0"},"updateProperties":{"app.time.timestamp.format":"YYYYMMDD"},"force":false}
/streams/deployments/update/{timelog1}
| 参数 | 描述 |
|---|---|
|
现有流定义名称(必填) |
示例请求
$ curl 'http://localhost:9393/streams/deployments/update/timelog1' -i -X POST \
-H 'Content-Type: application/json' \
-d '{"releaseName":"timelog1","packageIdentifier":{"repositoryName":"test","packageName":"timelog1","packageVersion":"1.0.0"},"updateProperties":{"app.time.timestamp.format":"YYYYMMDD"},"force":false}'
43.8.5. 回滚流定义
将流回滚到之前或特定版本。
请求结构
POST /streams/deployments/rollback/timelog1/1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393
/streams/deployments/rollback/{name}/{version}
| 参数 | 描述 |
|---|---|
|
现有流定义名称(必填) |
|
回滚的版本 |
43.8.6. 获取清单
返回已发布版本的 manifest。对于带有依赖的包,manifest 包含这些依赖的内容。
请求结构
GET /streams/deployments/manifest/timelog1/1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393
/streams/deployments/manifest/{name}/{version}
| 参数 | 描述 |
|---|---|
|
现有流定义名称(必填) |
|
该流的版本 |
43.8.7. 获取部署历史
获取该流的部署历史。
请求结构
GET /streams/deployments/history/timelog1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393
43.8.8. 获取部署平台
检索支持的部署平台列表。
请求结构
GET /streams/deployments/platform/list HTTP/1.1
Content-Type: application/json
Host: localhost:9393
43.8.9. 尺度流定义
流定义端点允许你在流定义中扩展单个应用。 可选地,你可以在请求主体中传递应用参数作为属性。 以下主题提供更多细节:
请求结构
POST /streams/deployments/scale/timelog/log/instances/1 HTTP/1.1
Content-Type: application/json
Content-Length: 36
Host: localhost:9393
{"app.time.timestamp.format":"YYYY"}
/streams/deployments/scale/{streamName}/{appName}/instances/{count}
| 参数 | 描述 |
|---|---|
|
现有流定义的名称(必填) |
|
流中应用名称以扩展 |
|
所选流应用的实例数(必需) |
43.9. 任务定义
任务定义端点提供关于已注册于Spring Cloud数据流服务器的任务定义的信息。 以下主题提供更多细节:
43.9.1. 创建新的任务定义
任务定义端点允许你创建一个新的任务定义。 以下主题提供更多细节:
请求结构
POST /tasks/definitions HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=my-task&definition=timestamp+--format%3D%27YYYY+MM+DD%27&description=Demo+task+definition+for+testing
示例请求
$ curl 'http://localhost:9393/tasks/definitions' -i -X POST \
-d 'name=my-task&definition=timestamp+--format%3D%27YYYY+MM+DD%27&description=Demo+task+definition+for+testing'
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 342
{
"name" : "my-task",
"dslText" : "timestamp --format='YYYY MM DD'",
"description" : "Demo task definition for testing",
"composed" : false,
"composedTaskElement" : false,
"lastTaskExecution" : null,
"status" : "UNKNOWN",
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions/my-task"
}
}
}
43.9.2. 列出所有任务定义
任务定义端点允许你获取所有任务定义。 以下主题提供更多细节:
请求结构
GET /tasks/definitions?page=0&size=10&sort=taskName%2CASC&search=&manifest=true HTTP/1.1
Host: localhost:9393
示例请求
$ curl 'http://localhost:9393/tasks/definitions?page=0&size=10&sort=taskName%2CASC&search=&manifest=true' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 689
{
"_embedded" : {
"taskDefinitionResourceList" : [ {
"name" : "my-task",
"dslText" : "timestamp --format='YYYY MM DD'",
"description" : "Demo task definition for testing",
"composed" : false,
"composedTaskElement" : false,
"lastTaskExecution" : null,
"status" : "UNKNOWN",
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions/my-task"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions?page=0&size=10&sort=taskName,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.9.3. 检索任务定义细节
任务定义端点允许你获得一个单一的任务定义。 以下主题提供更多细节:
请求结构
GET /tasks/definitions/my-task?manifest=true HTTP/1.1
Host: localhost:9393
/tasks/definitions/{my-task}
| 参数 | 描述 |
|---|---|
|
现有任务定义的名称(必填) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 342
{
"name" : "my-task",
"dslText" : "timestamp --format='YYYY MM DD'",
"description" : "Demo task definition for testing",
"composed" : false,
"composedTaskElement" : false,
"lastTaskExecution" : null,
"status" : "UNKNOWN",
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions/my-task"
}
}
}
43.10. 任务调度器
任务调度器端点提供与调度器实现注册的任务调度信息。 以下主题提供更多细节:
43.10.1. 创建新的任务计划
任务计划端点允许你创建新的任务计划。 以下主题提供更多细节:
请求结构
POST /tasks/schedules HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
scheduleName=myschedule&taskDefinitionName=mytaskname&platform=default&properties=scheduler.cron.expression%3D00+22+17+%3F+*&arguments=--foo%3Dbar
43.10.2. 列出所有赛程表
任务计划终端允许你获取所有任务计划。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 587
{
"_embedded" : {
"scheduleInfoResourceList" : [ {
"scheduleName" : "FOO",
"taskDefinitionName" : "BAR",
"scheduleProperties" : {
"scheduler.AAA.spring.cloud.scheduler.cron.expression" : "00 41 17 ? * *"
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules/FOO"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.10.3. 筛选时间表列表
任务计划端点允许你获取所有带有指定任务定义名称的任务计划。 以下主题提供更多细节:
请求结构
GET /tasks/schedules/instances/FOO?page=0&size=10 HTTP/1.1
Host: localhost:9393
/任务/计划/实例/{task-definition-name}
| 参数 | 描述 |
|---|---|
|
根据指定任务定义过滤调度(必修) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 599
{
"_embedded" : {
"scheduleInfoResourceList" : [ {
"scheduleName" : "FOO",
"taskDefinitionName" : "BAR",
"scheduleProperties" : {
"scheduler.AAA.spring.cloud.scheduler.cron.expression" : "00 41 17 ? * *"
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules/FOO"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules/instances/FOO?page=0&size=1"
}
},
"page" : {
"size" : 1,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.12. 任务执行
任务执行端点提供注册在 Spring Cloud 数据流服务器上的任务执行信息。 以下主题提供更多细节:
43.12.1. 启动任务(遗产)
启动任务时,通过请求创建新的任务执行来完成。如果任务注册为 Spring Boot 3 应用程序,该端点将失败。
以下主题提供更多细节:
请求结构
POST /tasks/executions HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=taskA&properties=app.my-task.foo%3Dbar%2Cdeployer.my-task.something-else%3D3&arguments=--server.port%3D8080+--foo%3Dbar
43.12.2. 启动任务
启动任务时,通过请求创建新的任务执行来完成。响应将包含执行ID和模式目标。
以下主题提供更多细节:
请求结构
POST /tasks/executions/launch HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=taskA&properties=app.my-task.foo%3Dbar%2Cdeployer.my-task.something-else%3D3&arguments=--server.port%3D8080+--foo%3Dbar
43.12.4. 列出所有任务执行
任务执行端点允许你列出所有任务执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2497
{
"_embedded" : {
"taskExecutionResourceList" : [ {
"executionId" : 1,
"exitCode" : null,
"taskName" : "taskA",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskA-e4fc87e5-dbd7-450e-935e-69470d10afe9",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskA",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskA-e4fc87e5-dbd7-450e-935e-69470d10afe9?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/1?schemaTarget=boot2"
}
}
} ]
},
"_links" : {
"first" : {
"href" : "http://localhost:9393/tasks/executions?page=0&size=2"
},
"prev" : {
"href" : "http://localhost:9393/tasks/executions?page=0&size=2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions?page=1&size=2"
},
"last" : {
"href" : "http://localhost:9393/tasks/executions?page=1&size=2"
}
},
"page" : {
"size" : 2,
"totalElements" : 3,
"totalPages" : 2,
"number" : 1
}
}
43.12.5. 列出所有指定任务名称的任务执行
任务执行端点允许你列出指定任务名称的任务执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2222
{
"_embedded" : {
"taskExecutionResourceList" : [ {
"executionId" : 2,
"exitCode" : null,
"taskName" : "taskB",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskB-cd70929e-1495-4f72-bc22-008f919e2b5a",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskB",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskB-cd70929e-1495-4f72-bc22-008f919e2b5a?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/2?schemaTarget=boot2"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/executions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.12.6. 任务执行小组
任务执行端点让你获取任务执行的详细信息。 以下主题提供更多细节:
请求结构
GET /tasks/executions/1?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/tasks/executions/{id}
| 参数 | 描述 |
|---|---|
|
现有任务执行的ID(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1767
{
"executionId" : 1,
"exitCode" : null,
"taskName" : "taskA",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskA-43aeab47-b46a-49ba-ba7b-f045dec094e4",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskA",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskA-43aeab47-b46a-49ba-ba7b-f045dec094e4?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/1?schemaTarget=boot2"
}
}
}
43.12.7. 按外部ID执行任务的详细信息
任务执行端点让你获取任务执行的详细信息。 以下主题提供更多细节:
请求结构
GET /tasks/executions/external/taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8?platform=default HTTP/1.1
Host: localhost:9393
/tasks/executions/external/{externalExecutionId}
| 参数 | 描述 |
|---|---|
|
现有任务执行的外部 ExecutionId(必需) |
示例请求
$ curl 'http://localhost:9393/tasks/executions/external/taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8?platform=default' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1767
{
"executionId" : 2,
"exitCode" : null,
"taskName" : "taskB",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskB",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/2?schemaTarget=boot2"
}
}
}
43.12.8. 删除任务执行
任务执行端点允许您:
-
清理部署任务所需的资源
-
从持久存储中移除相关任务数据以及可能关联的春季批处理作业数据
| 清理实现(第一个选项)是针对特定平台的。这两种作都可以被触发 立即或分开。 |
以下主题提供更多细节:
请参考以下关于删除任务执行数据的部分。
请求结构
DELETE /tasks/executions/1,2?schemaTarget=boot2&action=CLEANUP,REMOVE_DATA HTTP/1.1
Host: localhost:9393
/tasks/executions/{ids}
| 参数 | 描述 |
|---|---|
|
提供两个逗号间隔的任务执行ID值。 |
|
你必须提供实际存在的任务执行ID。否则, |
请求参数
该端点支持一个可选的请求参数,名为动作。这是一个枚举,支持以下观点 值:
-
清理
-
REMOVE_DATA
| 参数 | 描述 |
|---|---|
|
同时使用CLEANUP和REMOVE_DATA动作。 |
|
任务的模式目标。(可选) |
43.12.9. 删除任务执行数据
你不仅可以清理用于部署任务的资源,还可以删除与 相关的数据 任务执行来自底层持久存储。此外,如果任务执行与某个或 更多的批作业执行也会被移除。
以下示例展示了如何使用多个任务执行ID和多个动作来发起请求:
$ curl 'http://localhost:9393/tasks/executions/1,2?schemaTarget=boot2&action=CLEANUP,REMOVE_DATA' -i -X DELETE
/tasks/executions/{ids}
| 参数 | 描述 |
|---|---|
|
提供两个逗号间隔的任务执行ID值。 |
| 参数 | 描述 |
|---|---|
|
同时使用CLEANUP和REMOVE_DATA动作。 |
|
任务的模式目标。(可选) |
当从持久存储中删除数据时,使用REMOVE_DATA动作参数,你必须提供
代表父任务执行的任务执行ID。当你提供子任务执行(作为组合任务的一部分执行)时,
一个400(糟糕的请求)返回了HTTP状态。 |
当删除大量任务执行时,某些数据库类型会限制在clause(Spring Cloud Data Flow 用于删除任务执行关系的方法)。
Spring Cloud Data Flow 支持为 Sql Server(最多 2100 条)和 Oracle 数据库(最多 1000 条)进行删除分块处理。
然而,Spring Cloud Data Flow 允许用户设置自己的分块因子。要做到这一点,可以设置spring.cloud.dataflow.task.executionDeleteChunkSize属性映射到相应的块大小。
默认是0这意味着 Spring Cloud Data Flow 不会对任务执行删除进行分块处理(Oracle 和 SQL Server 数据库除外)。 |
43.13. 作业执行
作业执行端点提供注册在 Spring Cloud 数据流服务器上的作业执行信息。 以下主题提供更多细节:
43.13.1. 列出所有作业执行
作业执行端点允许你列出所有作业执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3658
{
"_embedded" : {
"jobExecutionResourceList" : [ {
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:18",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 2,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 2,
"jobName" : "DOCJOB1",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STOPPED",
"startTime" : "2024-09-13T10:11:18.778+0000",
"createTime" : "2024-09-13T10:11:18.777+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:18.778+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&restart=true"
}
}
}, {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:18",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 1,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTED",
"startTime" : "2024-09-13T10:11:18.773+0000",
"createTime" : "2024-09-13T10:11:18.772+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:18.773+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&restart=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.13.2. 列出所有不含步骤执行的作业执行
作业执行端点允许你列出所有不含步骤执行的作业执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1937
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"instanceId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:14",
"startDateTime" : "2024-09-13T10:11:14.840+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"status" : "STOPPED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
}
}
}, {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:14",
"startDateTime" : "2024-09-13T10:11:14.752+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.13.3. 列出所有指定作业名称的作业执行
作业执行端点允许你列出所有作业执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1964
{
"_embedded" : {
"jobExecutionResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:20",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 1,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTED",
"startTime" : "2024-09-13T10:11:20.627+0000",
"createTime" : "2024-09-13T10:11:20.626+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:20.627+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&restart=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.4. 列出所有指定作业名但不含步骤执行的作业执行
作业执行端点允许你列出所有作业执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1108
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:23",
"startDateTime" : "2024-09-13T10:11:23.869+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.5. 列出指定日期区间内所有不包含步执行的作业执行
作业执行端点允许你列出所有作业执行。 以下主题提供更多细节:
请求结构
GET /jobs/thinexecutions?page=0&size=10&fromDate=2000-09-24T17%3A00%3A45%2C000&toDate=2050-09-24T18%3A00%3A45%2C000 HTTP/1.1
Host: localhost:9393
请求参数
| 参数 | 描述 |
|---|---|
|
基于零的页码(可选) |
|
请求的页面大小(可选) |
|
起始日期的筛选结果格式为 'yyyy-MM-dd'T'HH:mm:ss,SSS' |
|
滤波结果,直到 |
示例请求
$ curl 'http://localhost:9393/jobs/thinexecutions?page=0&size=10&fromDate=2000-09-24T17%3A00%3A45%2C000&toDate=2050-09-24T18%3A00%3A45%2C000' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1937
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"instanceId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:22",
"startDateTime" : "2024-09-13T10:11:22.807+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"status" : "STOPPED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
}
}
}, {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:22",
"startDateTime" : "2024-09-13T10:11:22.802+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.13.6. 列出指定作业实例ID下所有作业执行(不含步骤执行)
作业执行端点允许你列出所有作业执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1108
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:21",
"startDateTime" : "2024-09-13T10:11:21.794+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.7. 列出指定任务执行ID的所有作业执行次数(不含步骤执行)
作业执行端点允许你列出所有作业执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1108
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:24",
"startDateTime" : "2024-09-13T10:11:24.914+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.8. 作业执行细节
作业执行端点可以让你获取关于作业执行的详细信息。 以下主题提供更多细节:
请求结构
GET /jobs/executions/2?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/jobs/executions/{id}
| 参数 | 描述 |
|---|---|
|
现有作业执行的ID(必填) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1460
{
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:25",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 2,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 2,
"jobName" : "DOCJOB1",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STOPPED",
"startTime" : "2024-09-13T10:11:25.966+0000",
"createTime" : "2024-09-13T10:11:25.966+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:25.966+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&restart=true"
}
}
}
43.13.9. 停止作业执行
作业执行端点允许你停止作业执行。 以下主题提供更多细节:
43.13.10. 重启作业执行
作业执行端点允许你重启作业执行。 以下主题提供更多细节:
请求结构
PUT /jobs/executions/2?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
restart=true
/jobs/executions/{id}
| 参数 | 描述 |
|---|---|
|
现有作业执行的ID(必填) |
43.14. 工作实例
作业实例端点提供关于与 Spring Cloud 数据流服务器注册的作业实例的信息。 以下主题提供更多细节:
43.14.1. 列出所有作业实例
作业实例端点允许你列出所有作业实例。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1807
{
"_embedded" : {
"jobInstanceResourceList" : [ {
"jobName" : "DOCJOB",
"jobInstanceId" : 1,
"jobExecutions" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "",
"startTime" : "",
"duration" : "",
"jobExecution" : {
"id" : 1,
"version" : null,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTING",
"startTime" : null,
"createTime" : "2024-09-13T10:11:41.775+0000",
"endTime" : null,
"lastUpdated" : null,
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2"
} ],
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/instances/1"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/instances?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.14.2. 作业实例详情
作业实例端点允许你列出所有作业实例。 以下主题提供更多细节:
请求结构
GET /jobs/instances/1?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/jobs/instances/{id}
| 参数 | 描述 |
|---|---|
|
现有工作实例的ID(必填) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1312
{
"jobName" : "DOCJOB",
"jobInstanceId" : 1,
"jobExecutions" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "",
"startTime" : "",
"duration" : "",
"jobExecution" : {
"id" : 1,
"version" : null,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTING",
"startTime" : null,
"createTime" : "2024-09-13T10:11:42.763+0000",
"endTime" : null,
"lastUpdated" : null,
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2"
} ],
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/instances/1"
}
}
}
43.15. 作业步骤执行
作业步骤执行端点提供关于已注册在 Spring Cloud 数据流服务器的作业步骤执行信息。 以下主题提供更多细节:
43.15.1. 列出作业执行的所有步骤执行
作业步骤执行端点允许你列出所有作业步骤执行。 以下主题提供更多细节:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1805
{
"_embedded" : {
"stepExecutionResourceList" : [ {
"jobExecutionId" : 1,
"stepExecution" : {
"stepName" : "DOCJOB_STEP",
"id" : 1,
"version" : 0,
"status" : "STARTING",
"readCount" : 0,
"writeCount" : 0,
"commitCount" : 0,
"rollbackCount" : 0,
"readSkipCount" : 0,
"processSkipCount" : 0,
"writeSkipCount" : 0,
"startTime" : "2024-09-13T10:11:35.706+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:35.707+0000",
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"exitStatus" : {
"exitCode" : "EXECUTING",
"exitDescription" : ""
},
"terminateOnly" : false,
"filterCount" : 0,
"jobParameters" : {
"parameters" : { }
},
"jobExecutionId" : 1,
"skipCount" : 0,
"summary" : "StepExecution: id=1, version=0, name=DOCJOB_STEP, status=STARTING, exitStatus=EXECUTING, readCount=0, filterCount=0, writeCount=0 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=0, rollbackCount=0",
"failureExceptions" : [ ]
},
"stepType" : "",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1?schemaTarget=boot2"
},
"progress" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1/progress?schemaTarget=boot2"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.15.2. 作业步骤执行细节
作业步骤执行端点让你获得关于作业步骤执行的详细信息。以下主题提供了更多细节:
请求结构
GET /jobs/executions/1/steps/1?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/jobs/executions/{id}/steps/{stepid}
| 参数 | 描述 |
|---|---|
|
现有作业执行的ID(必填) |
|
特定作业执行的现有步骤执行ID(必填) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1339
{
"jobExecutionId" : 1,
"stepExecution" : {
"stepName" : "DOCJOB_STEP",
"id" : 1,
"version" : 0,
"status" : "STARTING",
"readCount" : 0,
"writeCount" : 0,
"commitCount" : 0,
"rollbackCount" : 0,
"readSkipCount" : 0,
"processSkipCount" : 0,
"writeSkipCount" : 0,
"startTime" : "2024-09-13T10:11:34.601+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:34.601+0000",
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"exitStatus" : {
"exitCode" : "EXECUTING",
"exitDescription" : ""
},
"terminateOnly" : false,
"filterCount" : 0,
"jobParameters" : {
"parameters" : { }
},
"jobExecutionId" : 1,
"skipCount" : 0,
"summary" : "StepExecution: id=1, version=0, name=DOCJOB_STEP, status=STARTING, exitStatus=EXECUTING, readCount=0, filterCount=0, writeCount=0 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=0, rollbackCount=0",
"failureExceptions" : [ ]
},
"stepType" : "",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1?schemaTarget=boot2"
},
"progress" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1/progress?schemaTarget=boot2"
}
}
}
43.15.3. 作业步骤执行进度
作业步骤执行端点可以让你获得作业步骤执行进度的详细信息。以下主题提供了更多细节:
请求结构
GET /jobs/executions/1/steps/1/progress HTTP/1.1
Host: localhost:9393
/jobs/executions/{id}/steps/{stepid}/progress
| 参数 | 描述 |
|---|---|
|
现有作业执行的ID(必填) |
|
特定作业执行的现有步骤执行ID(必填) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2794
{
"stepExecution" : {
"stepName" : "DOCJOB_STEP",
"id" : 1,
"version" : 0,
"status" : "STARTING",
"readCount" : 0,
"writeCount" : 0,
"commitCount" : 0,
"rollbackCount" : 0,
"readSkipCount" : 0,
"processSkipCount" : 0,
"writeSkipCount" : 0,
"startTime" : "2024-09-13T10:11:36.711+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:36.711+0000",
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"exitStatus" : {
"exitCode" : "EXECUTING",
"exitDescription" : ""
},
"terminateOnly" : false,
"filterCount" : 0,
"jobParameters" : {
"parameters" : { }
},
"jobExecutionId" : 1,
"skipCount" : 0,
"summary" : "StepExecution: id=1, version=0, name=DOCJOB_STEP, status=STARTING, exitStatus=EXECUTING, readCount=0, filterCount=0, writeCount=0 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=0, rollbackCount=0",
"failureExceptions" : [ ]
},
"stepExecutionHistory" : {
"stepName" : "DOCJOB_STEP",
"count" : 0,
"commitCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"rollbackCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"readCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"writeCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"filterCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"readSkipCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"writeSkipCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"processSkipCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"duration" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"durationPerRead" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
}
},
"percentageComplete" : 0.5,
"finished" : false,
"duration" : 18.0,
"_links" : {
"progress" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1/progress?schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1"
}
}
}
| stepExecutionHistory 中的以下字段已被弃用,将在未来版本中移除:rollbackCount、readCount、writeCount、filterCount、readSkipCount、writeSkipCount、processSkipCount、durationPerRead。 |
43.16. 应用程序运行时信息
你可以获取系统已知应用的运行信息,可以是全球范围的,也可以单独获取。以下主题提供了更多细节:
43.17. 直播日志
你可以获取整个流或流内特定应用的应用日志。以下主题提供更多细节:
43.18. 任务日志
你可以获取特定任务执行的任务日志。
以下主题提供了更多细节:
43.18.1. 获取任务执行日志
要获取任务执行日志,请查询/tasks/logs/<ExternalTaskExecutionId>通过使用 HTTP 来终止获取方法。。 以下主题提供更多细节:
请求结构
GET /tasks/logs/taskA-69b2b37c-9d98-4f49-a43d-708c4cd2c02f?platformName=default HTTP/1.1
Host: localhost:9393
示例请求
$ curl 'http://localhost:9393/tasks/logs/taskA-69b2b37c-9d98-4f49-a43d-708c4cd2c02f?platformName=default' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 277
"stdout:\n2024-09-13 10:11:29.011 INFO 9073 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ba8a1dc: startup date [Fri Sep 13 10:11:29 UTC 2024]; root of context hierarchy\n"
44. OpenAPI
Springdoc 库以选择加入方式与服务器集成。启用后,它提供 OpenAPI3 文档和 Swagger 界面。
要启用,请在你的application.yml服务器启动前:
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
这些属性也可以在命令行中设置:
-Dspringdoc.api-docs.enabled=true -Dspringdoc.swagger-ui.enabled=true
或作为环境变量:
SPRINGDOC_APIDOCS_ENABLED=true
SPRINGDOC_SWAGGERUI_ENABLED=true
启用后,OpenAPI3 文档和 Swagger 界面可在/v3/api-docs和/swagger-ui/index.html分别是URI(例如,localhost:9393/v3/api-docs)。
| Swagger 的界面一开始会是空白的。在“探索”栏输入“/v3/api-docs/”,然后点击“探索”。 |
如果你试用 Swagger UI 里的 API,结果出现了与以下相关的错误“未找到类型属性字符串”试着用可分页参数替换或移除它的{ }“排序”属性。 |