通过 EventBridge 接收异步任务完成后的推送通知,无需轮询任务状态接口。
背景
提交异步任务(如语音识别、视频生成)后,有两种方式获取任务完成状态:
| 对比项 | 轮询方式 | 通知方式 |
|---|---|---|
| 限流影响 | 重复请求受 API 限流限制 | 无需额外调用 API |
| 集成复杂度 | 简单,仅需调用任务查询接口 | 需配置 EventBridge |
| 服务器资源消耗 | 高,持续轮询消耗资源 | 低,服务器仅需处理推送事件 |
| 实时性 | 取决于轮询间隔 | 接近实时 |
| 适用场景 | 适合简单集成或低频任务 | 推荐用于生产环境 |
- 方案一:配置 HTTP 回调地址 — 任务完成后,EventBridge 向你的 HTTP 地址发送回调请求。
- 方案二:配置 RocketMQ — 任务完成后,EventBridge 将事件投递到 RocketMQ Topic,由消费者自行处理。
方案一:配置 HTTP 回调地址
流程概览
| 步骤 | 说明 |
|---|---|
| 流程 | 1. DashScope 异步任务完成 → 2. DashScope 将事件发布到 EventBridge → 3. EventBridge 匹配事件转发规则 → 4. EventBridge 向你的 HTTP 回调地址发送 POST 请求 → 5. 你的服务器接收并处理事件 |

EventBridge 事件投递会产生费用,详见事件总线计费。
操作步骤
步骤一:准备 HTTP 回调地址
步骤一:准备 HTTP 回调地址
HTTP 回调地址需满足以下条件:
- 公网可访问的 URL(HTTP 或 HTTPS)
- 支持接收 POST 请求
- 支持接收 CloudEvents 格式的 JSON 请求体
事件字段说明
事件字段说明
| 参数 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| datacontenttype | String | 数据内容类型,仅支持 application/json | application/json;charset=utf-8 |
| aliyunaccountid | String | 阿里云账号 ID | 123456789098**** |
| aliyunpublishtime | String | 事件被 EventBridge 接收的时间 | 2020-11-19T21:04:42.179PRC |
| data | Object | 事件内容,即 CloudEvents 上下文对象 | — |
| data[].start_time | String | 异步任务开始时间(格式:yyyy-MM-dd HH:mm:ss) | 2023-10-25 09:45:09 |
| data[].end_time | String | 异步任务完成时间(格式:yyyy-MM-dd HH:mm:ss) | 2023-10-25 09:45:16 |
| data[].user_api_unique_key | String | API 唯一标识(格式:apikey:version:group:task:function-call:model) | apikey:v1:audio:asr:transcription:paraformer-8k-v1 |
| data[].task_status | String | 任务状态:PENDING / RUNNING / SUCCEEDED / FAILED / CANCELED / UNKNOWN | SUCCEEDED |
| data[].task_id | String | 任务 ID | a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35 |
| data[].region | String | 任务运行区域 | cn-beijing |
| data[].request_id | String | 请求 ID | 108f38f5-xxxx-xxxx-xxxx-6504db9080b3 |
| data[].api_key_id | String | API Key ID | 1234 |
| aliyunoriginalaccountid | String | 阿里云原始账号 ID | 123456789098**** |
| specversion | String | CloudEvents 协议版本 | 1.0 |
| aliyuneventbusname | String | 接收该事件的事件总线名称 | default |
| id | String | 事件唯一 ID | 45ef4dewdwe1-7c35-447a-bd93-fab**** |
| source | String | 事件来源,与 id 组合构成唯一标识 | acs.dashscope |
| time | String | 事件生成时间 | 2020-11-19T21:04:41+08:00 |
| aliyunregionid | String | 接收事件的区域 | cn-beijing |
| type | String | 事件类型,用于路由、过滤和策略执行 | dashscope:System:AsyncTaskFinish |
步骤二:在 EventBridge 控制台查看事件
步骤二:在 EventBridge 控制台查看事件
-
登录 EventBridge 控制台,选择 cn-beijing 地域。
DashScope 异步任务事件会发布到 cn-beijing 地域的 default 事件总线。 -
单击 事件追踪,可按时间范围或条件筛选搜索事件。

- 单击搜索结果中的 事件详情,可查看完整事件内容。
步骤三:配置事件转发规则
步骤三:配置事件转发规则
-
在 EventBridge 控制台,单击 创建规则。

-
填写规则的基本信息(名称、描述、事件总线)。

- 配置事件模式。如需接收所有 DashScope 异步任务完成事件,使用以下模式:
data 过滤条件:
- 配置事件目标(见步骤四)。
步骤四:配置事件目标为 HTTP 回调地址
步骤四:配置事件目标为 HTTP 回调地址
在事件目标配置中,设置以下字段:

- 服务类型:HTTP
- URL:你的公网可访问 HTTP 或 HTTPS 回调地址
- Body:完整事件 — 投递完整的 CloudEvents 内容
- 网络类型:外部地址选择公网,内部 VPC 地址选择阿里云专有网络VPC


方案二:配置 RocketMQ
流程概览
| 步骤 | 说明 |
|---|---|
| 流程 | 1. DashScope 异步任务完成 → 2. DashScope 将事件发布到 EventBridge → 3. EventBridge 匹配事件转发规则 → 4. EventBridge 将事件消息投递到 RocketMQ Topic → 5. 你的消费者读取并处理消息 |

该方案会同时产生 EventBridge 和云消息队列 RocketMQ 的费用,详见事件总线计费和 RocketMQ计费。
操作步骤
步骤一:创建 RocketMQ 实例
步骤一:创建 RocketMQ 实例
-
登录 RocketMQ 控制台,创建 RocketMQ 5.x 实例。

-
在实例中创建 Topic,用于接收 EventBridge 消息。

-
创建 Consumer Group,应用程序将通过该分组订阅 Topic。

步骤二:在 EventBridge 控制台查看事件
步骤二:在 EventBridge 控制台查看事件
-
登录 EventBridge 控制台,选择 cn-beijing 地域。
DashScope 异步任务事件会发布到 cn-beijing 地域的 default 事件总线。 -
单击 事件追踪,可按时间范围或条件筛选搜索事件。

- 单击搜索结果中的 事件详情,可查看完整事件内容。
步骤三:配置事件转发规则
步骤三:配置事件转发规则
-
在 EventBridge 控制台,单击 创建规则。

-
填写规则的基本信息(名称、描述、事件总线)。

- 配置事件模式。如需接收所有 DashScope 异步任务完成事件,使用以下模式:
data 过滤条件:
- 配置事件目标(见步骤四)。
步骤四:配置事件目标为 RocketMQ
步骤四:配置事件目标为 RocketMQ
在事件目标配置中,设置以下字段:
- 服务类型:消息队列 RocketMQ 版
- 版本:5.x
- 实例ID:已创建的 RocketMQ 实例 ID
- Topic:已创建的 Topic 名称

步骤五:在 RocketMQ 控制台查看消息
步骤五:在 RocketMQ 控制台查看消息
任务完成并投递事件后,可在 RocketMQ 控制台查看消息。





RocketMQ 控制台的消息一键收发体验功能依赖函数计算,会产生额外费用,详见函数计算计费规则。
步骤六:使用 SDK 消费消息
步骤六:使用 SDK 消费消息
在项目中添加 RocketMQ 5.x 客户端依赖:使用 PushConsumer 订阅并处理消息:
常见问题
一个事件规则可以配置多个事件目标吗?
一个事件规则可以配置多个事件目标吗?
可以。一个事件转发规则支持配置多个事件目标,事件匹配规则后会同时投递到所有目标。
配置了事件规则但未收到事件。
配置了事件规则但未收到事件。
最常见的原因是地域不一致。DashScope 会将异步任务事件发布到 cn-beijing 地域的 EventBridge。如果你的事件规则创建在其他地域,将无法收到 DashScope 事件。请确认你的规则配置在 cn-beijing 地域。

我的 HTTP/HTTPS 地址返回超时或报错。
我的 HTTP/HTTPS 地址返回超时或报错。
请检查以下内容:
- 确认地址 URL 公网可访问,且在超时时间范围内返回 2xx 状态码。
- 确认服务器支持接收 POST 请求和 JSON 格式的请求体。
- 确认没有防火墙或安全组规则拦截来自 EventBridge IP 段的入站请求。
- 检查服务器日志,确认处理事件载荷时没有出现应用层错误。