什么是事件推送
事件推送是 WeData 提供的项目级事件推送能力。当任务或工作流的运行状态发生变化时,WeData 可以将对应事件主动推送到腾讯云事件总线 EventBridge,再由 EventBridge 根据事件规则将事件路由到下游系统。
事件推送适用于外部系统需要及时感知 WeData 任务或工作流状态的场景,可减少通过 WeData OpenAPI 轮询状态产生的等待和调用开销。
事件推送链路包括以下环节:
1. WeData 产生任务实例或工作流实例状态事件。
2. WeData 推送通道根据事件类型和任务或工作流范围进行过滤。
3. WeData 将符合条件的事件推送到绑定的 EventBridge 自定义事件集。
4. EventBridge 根据事件规则进行匹配,并将事件投递到下游目标。
适用场景
场景 | 说明 |
BI 报表刷新 | 数仓任务执行成功后,通知 BI 系统刷新报表缓存或触发数据拉取 |
数据质量告警 | 任务执行失败后,将事件发送到监控平台,触发告警或工单流程 |
跨平台编排 | 将 WeData 任务完成事件作为其他调度系统的触发信号 |
数据应用联动 | 数据产出完成后,通知数据服务层刷新缓存或更新 API 数据 |
运营监控大屏 | 接收任务运行状态事件,更新监控大屏数据 |
IM 消息通知 | 任务执行失败后,由下游系统向相关负责人发送通知 |
WeData 与 EventBridge 的职责
配置位置 | 主要职责 |
WeData 推送通道 | 选择需要产生的事件类型,并按任务或工作流范围进行基础过滤 |
EventBridge 事件规则 | 根据事件模式进行进一步匹配和路由 |
EventBridge 投递目标 | 将匹配的事件发送到下游腾讯云服务或业务系统 |
支持的事件类型
WeData 支持任务调度项目和工作流调度项目。不同调度模式下可选择的事件类型不同。
任务实例事件
任务调度项目支持以下事件:
事件类型 | 事件编码 | 触发时机 |
任务开始运行 | task.instance.running | 任务实例从等待状态变为运行中 |
任务执行成功 | task.instance.succeeded | 任务实例执行成功 |
任务执行失败 | task.instance.failed | 任务实例重试耗尽后最终执行失败 |
任务等待资源 | task.instance.waiting_resource | 任务实例进入等待资源状态 |
任务等待上游 | task.instance.waiting_upstream | 任务实例等待上游依赖完成 |
工作流实例事件
工作流调度项目支持以下事件:
事件类型 | 事件编码 | 触发时机 |
工作流开始运行 | workflow.instance.running | 工作流实例开始执行 |
工作流执行成功 | workflow.instance.succeeded | 工作流内所有任务执行成功 |
工作流执行失败 | workflow.instance.failed | 工作流实例执行失败 |
事件内容说明
WeData 按 CloudEvents 规范将事件推送到 EventBridge。用于配置事件规则的关键字段如下:
字段 | 说明 |
source | 事件源,固定为 wedata.cloud.tencent |
type | EventBridge 中的事件类型,格式为 wedata:{事件编码},例如 wedata:task.instance.succeeded |
data | 事件业务数据,字段随事件类型变化 |
任务实例事件的 data 字段
适用事件:
task.instance.running、task.instance.succeeded、task.instance.failed、task.instance.waiting_resource、task.instance.waiting_upstream。字段 | 类型 | 必有 | 说明 |
projectId | String | 是 | WeData 项目 ID |
projectName | String | 是 | WeData 项目名称 |
taskId | String | 是 | 任务 ID |
taskName | String | 是 | 任务名称 |
taskType | String | 是 | 任务类型,例如 SHELL、HIVE_SQL、SPARK_SQL、DATA_INTEGRATION |
instanceId | String | 是 | 实例 ID |
status | String | 是 | 实例状态: RUNNING、SUCCEEDED、FAILED、WAITING_RESOURCE 或 WAITING_UPSTREAM |
dataTime | String | 是 | 实例数据时间,格式为 YYYY-MM-DD |
scheduledTime | String | 是 | 计划调度时间,ISO 8601 格式,使用 UTC 时区 |
startTime | String | 否 | 实例开始运行时间,ISO 8601 格式,使用 UTC 时区;等待类状态可能为空 |
endTime | String | 否 | 实例结束时间,ISO 8601 格式,使用 UTC 时区;仅成功或失败状态有值 |
duration | Integer | 否 | 运行耗时,单位为秒;仅成功或失败状态有值 |
retryCount | Integer | 否 | 已重试次数;仅失败状态有值 |
errorMessage | String | 否 | 失败原因摘要;仅失败状态有值,最长 1024 个字符 |
inChargeId | String | 是 | 任务负责人 ID |
inChargeName | String | 是 | 任务负责人名称 |
folderId | String | 否 | 任务所在文件夹 ID |
folderName | String | 否 | 任务所在文件夹路径 |
resourceGroupId | String | 否 | 任务使用的资源组 ID |
tenantId | String | 是 | 租户 ID |
region | String | 是 | WeData 项目所在地域 |
工作流实例事件的 data 字段
适用事件:
workflow.instance.running、workflow.instance.succeeded、workflow.instance.failed。字段 | 类型 | 必有 | 说明 |
projectId | String | 是 | WeData 项目 ID |
projectName | String | 是 | WeData 项目名称 |
workflowId | String | 是 | 工作流 ID |
workflowName | String | 是 | 工作流名称 |
instanceId | String | 是 | 工作流实例 ID |
status | String | 是 | 工作流实例状态: RUNNING、SUCCEEDED 或 FAILED |
scheduledTime | String | 是 | 计划调度时间,ISO 8601 格式,使用 UTC 时区 |
startTime | String | 是 | 工作流开始运行时间 |
endTime | String | 否 | 工作流结束时间;仅成功或失败状态有值 |
duration | Integer | 否 | 运行耗时,单位为秒 |
totalTaskCount | Integer | 是 | 工作流内任务总数 |
succeededTaskCount | Integer | 否 | 已成功的任务数 |
failedTaskCount | Integer | 否 | 已失败的任务数 |
failedTaskNames | String 数组 | 否 | 失败的任务名称列表;仅失败状态有值 |
errorMessage | String | 否 | 工作流失败原因摘要;仅失败状态有值 |
inChargeId | String | 是 | 工作流负责人 ID |
inChargeName | String | 是 | 工作流负责人名称 |
tenantId | String | 是 | 租户 ID |
region | String | 是 | WeData 项目所在地域 |
测试事件的 data 字段
执行测试推送时,EventBridge 中的事件类型为
wedata:test.connectivity。字段 | 类型 | 说明 |
projectId | String | WeData 项目 ID |
projectName | String | WeData 项目名称 |
channelId | String | 推送通道 ID |
channelName | String | 推送通道名称 |
testTime | String | 测试发起时间 |
message | String | 固定值 This is a connectivity test event from WeData. |
使用限制
单个项目最多创建 10 条推送通道。
项目管理员默认拥有事件推送相关权限。项目也可以通过成员与角色管理,为自定义角色配置事件推送下的“推送通道”和“推送日志”权限;用户可执行的操作以其角色权限为准。
推送日志默认展示近 24 小时的记录,单次最长可查询近 7 天;超过 7 天的日志会自动清理。
EventBridge 的事件规则数、投递目标数、消息大小和投递频率等限制由 EventBridge 维护,请以 EventBridge 控制台和官方文档为准。