本文为您介绍MNS回调事件通知的回调机制、使用流程等信息。

背景信息

阿里云消息服务MNS(Message Service)是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。MNS提供了队列模型,支持多个生产者和消费者并发访问同一个队列,并能确保某条消息在取出之后的特定时间段内,无法被其他消费者获得。消息被消费后一段时间内不可见,需要用户主动删除,否则该消息会被再次消费。视频点播服务VOD支持通过消息服务MNS来接收点播的回调信息。更多有关消息服务MNS的详细介绍,请参见什么是消息服务MNS

MNS回调机制

  1. 您需要在消息服务MNS中创建队列,并在视频点播中配置相应回调。
  2. 当事件产生时,视频点播服务会将事件通知内容写入到消息服务MNS的消息队列中。
  3. 只要视频点播服务将消息写入MNS队列成功即视为回调成功,否则视为回调失败。若因配置错误(未授权点播服务访问MNS、Endpoint不是公网、队列名称不正确等原因)导致写入消息失败,视频点播服务会继续重试回调2次,即总共最多回调3次,3次回调都失败则会丢弃该消息。详细的回调判断与重试逻辑请参见回调判断与重试
  4. 回调成功后,您需要主动在消息服务中去接收消息,从接收的消息中查看事件通知的内容。而仅当消息被接收消费后,您才能删除该消息。当消息被消费后一段时间内不可见,需要您主动删除,否则该消息会被再次消费。

MNS回调使用方法

前提条件

使用限制

  • 视频点播服务支持多个存储地域,各存储地域之间事件通知的配置是相互独立的,即每个地域可以单独配置事件通知的回调方式和回调地址。您可以上传视频到不同地域的存储中,当视频处理(如上传、转码等)完成后,视频点播服务会根据存储地域配置的回调及时通知您,并将内容推送到您的MNS服务的队列中。
  • 推荐您按下述建议配置MNS消息队列的回调地域:
    • 如果视频保存在中国内地地域(如华北2、华东2等),建议使用华东2(上海)地域的队列,推送消息到非华东2(上海)地域的队列会存在较短时间的延迟。
    • 如果视频保存在其他地域(如新加坡、印度尼西亚等),建议创建或使用相应地域的消息队列。

      例如:视频存储地域为印度(孟买),则应创建或使用印度(孟买)地域的消息队列。

使用流程

  1. 授权视频点播服务VOD访问消息服务MNS。
    可通过以下两种方式进行授权:
    • 方式一:直接授予VOD对您云资源相应的访问权限,包含OSS、MNS、CDN以及KMS的部分权限。
      登录阿里云控制台后,访问云资源访问授权页面,单击同意授权,直接进行授权。授权页面
    • 方式二:给VOD服务的用户、用户组或角色授于消息服务(MNS)的访问权限。

      将系统策略中的AliyunMNSFullAccess(管理消息服务(MNS)的权限)或AliyunMNSReadOnlyAccess(管理消息服务(MNS)的权限)添加至授权策略中,详细操作请参见创建RAM用户并授权

  2. 在消息服务MNS中创建队列。
    在消息服务MNS中创建队列或使用已有队列。支持通过控制台和API/SDK的方式创建,控制台方式的具体操作,请参见创建队列;API/SDK方式的相关接口,请参见队列操作
    说明 建议遵循使用限制中的推荐区域创建或使用队列。
  3. 在视频点播服务中配置MNS回调方式的事件通知。
    在视频点播服务中配置回调的队列、按需选择配置相应类型的事件通知,视频点播支持的事件通知类型及各事件通知含义请参见事件列表
    视频点播支持通过控制台或API/SDK的方式配置事件通知,具体配置方法如下:
    • 控制台方式

      登录视频点播控制台,在左侧导航栏选择配置管理 > 媒体处理配置 > 回调设置,进入回调设置页面,配置回调的区域及队列并勾选需要回调的事件。详细操作请参见回调设置

      MNS回调
      说明
      • 控制台方式设置的回调为针对视频点播服务全局的配置。
      • 勾选视频AI处理完成后,所有的AI事件如AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete等完成后都会触发通知。
    • API/SDK方式

      调用SetMessageCallback - 设置事件通知配置接口,请求参数CallbackType指定为MNS,并配置EventTypeList(回调事件类型)、MnsEndpoint(消息队列公网Endpoint)、MnsQueueName(消息队列名称)等其他参数。

  4. 触发回调事件。
    完成事件通知配置后,您可以在视频点播服务中执行上传媒资文件(音/视频或图片),发起媒体处理(转码、截图等)等操作来触发相应的回调事件产生。
  5. 在消息服务MNS中查看消息。
    当满足产生回调事件条件时,点播服务端会将回调内容写入到您提供的队列中,您需要到消息服务中去主动接收消息,在消息详情中查看事件通知内容。

    支持通过控制台或API/SDK方式去接收消息,控制台方式的具体操作,请参见接收消息;API/SDK方式的相关接口,请参见消息操作

  6. 可选:在消息服务MNS中删除消息。
    队列支持多个生产者和消费者并发访问同一个队列,并能确保某条消息在取出之后的特定时间段内,无法被其他消费者获得。消息被消费后一段时间内不可见,需要用户主动删除,否则该消息会被再次消费。

    支持通过控制台或API/SDK方式去接收消息,控制台方式的具体操作,请参见删除消息;API/SDK方式的相关接口,请参见消息操作

SDK示例

消息服务MNS提供了多种语言的SDK供您使用,当回调配置完成后,您可以通过如下代码进行消费消息:

相关文档