本文为您介绍轻量消息队列(原 MNS)回调事件通知的回调机制、使用流程等信息。
背景信息
阿里云轻量消息队列(原 MNS) SMQ(Simple Message Queue (formerly MNS))是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。轻量消息队列(原 MNS)提供了队列模型,支持多个生产者和消费者并发访问同一个队列,并能确保某条消息在取出之后的特定时间段内,无法被其他消费者获得。消息被消费后一段时间内不可见,需要用户主动删除,否则该消息会被再次消费。视频点播服务VOD支持通过轻量消息队列(原 MNS)来接收点播的回调信息。更多有关轻量消息队列(原 MNS)的详细介绍,请参见什么是轻量消息队列(原 MNS)。
轻量消息队列(原MNS)回调机制
您需要在轻量消息队列(原 MNS)中创建队列,并在视频点播中配置相应回调。
当事件产生时,视频点播服务会将事件通知内容写入到轻量消息队列(原 MNS)的消息队列中。
只要视频点播服务将消息写入轻量消息队列(原 MNS)成功即视为回调成功,否则视为回调失败。若因配置错误(未授权点播服务访问轻量消息队列(原 MNS)、Endpoint不是公网、队列名称不正确等原因)导致写入消息失败,视频点播服务会继续重试回调2次,即总共最多回调3次,3次回调都失败则会丢弃该消息。详细的回调判断与重试逻辑请参见回调判断与重试。
回调成功后,您需要主动在消息服务中去接收消息,从接收的消息中查看事件通知的内容。而仅当消息被接收消费后,您才能删除该消息。当消息被消费后一段时间内不可见,需要您主动删除,否则该消息会被再次消费。
如何使用
前提条件
您已经注册了阿里云账号并完成账号实名认证。注册地址请参见阿里云官网。注册指引请参见注册阿里云账号。实名认证指引请参见个人实名认证或企业实名认证。
您已经开通了视频点播服务。开通步骤请参见开通视频点播服务。
您已经开通了轻量消息队列(原 MNS)。开通步骤请参见开通轻量消息队列(原 MNS)并授权。
使用说明
视频点播服务支持多个服务地域,各服务地域之间的事件通知配置是相互独立的,即每个地域可以单独配置事件通知的回调方式和回调地址。
在轻量消息队列(原 MNS)中,不同服务地域下,支持创建多个轻量消息队列(原 MNS),但在视频点播中,每个服务地域的MNS回调中仅支持配置一个轻量消息队列(原 MNS)。建议您按如下推荐地域创建和使用队列:
如果视频保存在中国内地地域(如华北2、华东2等),建议使用华东2(上海)地域的队列,如果推送消息到非华东2(上海)地域的队列会存在较短时间的延迟。
如果视频保存在其他地域(如新加坡、日本等),建议创建或使用相应地域的消息队列。
例如:视频存储地域为新加坡,则应创建或使用新加坡地域的消息队列。
MNS方式回调支持多地址回调,可满足多环境的开发需求。详情请参见设置多地址回调。
使用流程
授权视频点播服务VOD访问轻量消息队列(原 MNS)。
可通过以下两种方式进行授权:
方式一:直接授予VOD对您云资源相应的访问权限,包含OSS、轻量消息队列(原 MNS)、CDN以及KMS的部分权限。
方式二:给VOD服务的用户、用户组或角色授予轻量消息队列(原 MNS)的访问权限。
将系统策略中的AliyunMNSFullAccess(管理轻量消息队列(原 MNS)的权限)或AliyunMNSReadOnlyAccess(管理轻量消息队列(原 MNS)的权限)添加至授权策略中,详细操作请参见创建RAM用户并授权。
在轻量消息队列(原 MNS)中创建队列。
在视频点播服务中配置轻量消息队列(原 MNS)回调方式的事件通知。
说明通过点播控制台方式设置的回调为针对视频点播服务全局的回调配置;通过OpenAPI方式支持对视频点播服务进行全局配置回调或单次请求覆盖回调。
通过控制台配置轻量消息队列(原MNS)回调
登录视频点播控制台。
在左侧导航栏选择配置管理 > 媒体处理配置 > 回调设置,进入到回调设置页面。
单击页面顶部工作台右侧的服务地域,切换到目标服务地域。
配置回调设置。
单击回调设置右侧的修改设置。
配置回调参数。
参数名称
参数说明
回调方式
选择轻量消息队列(原 MNS)。
区域
选择需要配置事件通知的视频存储的区域。推荐与轻量消息队列(原 MNS)中创建的队列的区域保持一致。
队列
选择该区域下的队列。
说明如果没有可选的队列,请先创建。具体操作,请参见创建队列。
回调事件
按需勾选相应类型的事件通知,视频点播支持的事件通知类型及各事件通知含义请参见事件列表。
说明勾选视频AI处理完成后,所有的AI事件,包括AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete,无论哪个AI事件完成后都会触发通知。
单击确定,完成轻量消息队列(原 MNS)回调设置的配置。
通过OpenAPI配置轻量消息队列(原MNS)回调
通过调用不同的接口,支持对视频点播服务进行全局配置回调或单次请求覆盖回调。
全局配置:调用SetMessageCallback - 设置事件通知配置接口,请求参数
CallbackType
指定为轻量消息队列(原 MNS),并配置EventTypeList
(回调事件类型)、MnsEndpoint
(消息队列公网Endpoint)、MnsQueueName
(消息队列名称)等其他参数。单次请求覆盖:调用接口上传媒资文件或发起媒体处理任务时,通过指定请求参数
UserData
中的MessageCallback字段来设置单次请求的回调队列。涉及的API如下:
说明通过指定
UserData
中的MessageCallback
字段来设置回调时,必须先开启视频点播的全局事件通知,并配置相应的回调事件类型后,此处的回调配置才能生效。触发回调事件。
完成事件通知配置后,您可以在视频点播服务中执行上传媒资文件(音/视频或图片),发起媒体处理(转码、截图等)等操作来触发相应的回调事件产生。
在轻量消息队列(原 MNS)中查看消息。
可选:在轻量消息队列(原 MNS)中删除消息。
SDK示例
轻量消息队列(原 MNS)提供了多种语言的SDK供您使用,当回调配置完成后,您可以通过如下代码进行消费消息:
如何使用Java代码消费消息,请参见队列使用手册。
如何使用Python代码消费消息,请参见队列使用手册。
如何使用C#代码消费消息,请参见队列使用手册。
如何使用PHP代码消费消息,请参见队列使用手册。
其他语言可以通过调用接口来获取消息内容,首先掌握调用方式后,调用ReceiveMessage接口获取消息内容,调用DeleteMessage接口删除消息。
相关文档
有关HTTP回调与MNS回调的对比,请参见HTTP回调与轻量消息队列(原MNS)回调对比。
使用过程中遇到问题时,请参见事件通知常见问题。