轻量消息队列(原MNS)回调

本文为您介绍轻量消息队列(原 MNS)回调事件通知的回调机制、使用流程等信息。

背景信息

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

轻量消息队列(原MNS)回调机制

  1. 您需要在轻量消息队列(原 MNS)中创建队列,并在视频点播中配置相应回调。

  2. 当事件产生时,视频点播服务会将事件通知内容写入到轻量消息队列(原 MNS)的消息队列中。

  3. 只要视频点播服务将消息写入轻量消息队列(原 MNS)成功即视为回调成功,否则视为回调失败。若因配置错误(未授权点播服务访问轻量消息队列(原 MNS)、Endpoint不是公网、队列名称不正确等原因)导致写入消息失败,视频点播服务会继续重试回调2次,即总共最多回调3次,3次回调都失败则会丢弃该消息。详细的回调判断与重试逻辑请参见回调判断与重试

  4. 回调成功后,您需要主动在消息服务中去接收消息,从接收的消息中查看事件通知的内容。而仅当消息被接收消费后,您才能删除该消息。当消息被消费后一段时间内不可见,需要您主动删除,否则该消息会被再次消费。

如何使用

前提条件

使用说明

  • 视频点播服务支持多个服务地域,各服务地域之间的事件通知配置是相互独立的,即每个地域可以单独配置事件通知的回调方式和回调地址。

  • 轻量消息队列(原 MNS)中,不同服务地域下,支持创建多个轻量消息队列(原 MNS),但在视频点播中,每个服务地域的MNS回调中仅支持配置一个轻量消息队列(原 MNS)。建议您按如下推荐地域创建和使用队列:

    • 如果视频保存在中国内地地域(如华北2、华东2等),建议使用华东2(上海)地域的队列,如果推送消息到非华东2(上海)地域的队列会存在较短时间的延迟。

    • 如果视频保存在其他地域(如新加坡、日本等),建议创建或使用相应地域的消息队列。

      例如:视频存储地域为新加坡,则应创建或使用新加坡地域的消息队列。

  • MNS方式回调支持多地址回调,可满足多环境的开发需求。详情请参见设置多地址回调

使用流程

  1. 授权视频点播服务VOD访问轻量消息队列(原 MNS)

    可通过以下两种方式进行授权:

    • 方式一:直接授予VOD对您云资源相应的访问权限,包含OSS、轻量消息队列(原 MNS)、CDN以及KMS的部分权限。

      登录阿里云控制台后,访问云资源访问授权页面,单击同意授权,直接进行授权。授权页面

    • 方式二:给VOD服务的用户、用户组或角色授予轻量消息队列(原 MNS)的访问权限。

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

  2. 轻量消息队列(原 MNS)中创建队列。

    轻量消息队列(原 MNS)中创建队列或使用已有队列。支持通过控制台和API/SDK的方式创建,控制台方式的具体操作,请参见创建队列;API/SDK方式的相关接口,请参见队列操作

    说明

    建议遵循使用说明中的推荐区域创建或使用队列。

  3. 在视频点播服务中配置轻量消息队列(原 MNS)回调方式的事件通知。

    说明

    通过点播控制台方式设置的回调为针对视频点播服务全局的回调配置;通过OpenAPI方式支持对视频点播服务进行全局配置回调或单次请求覆盖回调。

    通过控制台配置轻量消息队列(原MNS)回调

    1. 登录视频点播控制台

    2. 在左侧导航栏选择配置管理 > 媒体处理配置 > 回调设置,进入到回调设置页面。

    3. 单击页面顶部工作台右侧的服务地域,切换到目标服务地域。

    4. 配置回调设置MNS回调1.png

      1. 单击回调设置右侧的修改设置

      2. 配置回调参数。

        参数名称

        参数说明

        回调方式

        选择轻量消息队列(原 MNS)

        区域

        选择需要配置事件通知的视频存储的区域。推荐与轻量消息队列(原 MNS)中创建的队列的区域保持一致。

        队列

        选择该区域下的队列。

        说明

        如果没有可选的队列,请先创建。具体操作,请参见创建队列

        回调事件

        按需勾选相应类型的事件通知,视频点播支持的事件通知类型及各事件通知含义请参见事件列表

        说明

        勾选视频AI处理完成后,所有的AI事件,包括AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete,无论哪个AI事件完成后都会触发通知。

      3. 单击确定,完成轻量消息队列(原 MNS)回调设置的配置。

    通过OpenAPI配置轻量消息队列(原MNS)回调

    通过调用不同的接口,支持对视频点播服务进行全局配置回调或单次请求覆盖回调。

    说明

    通过指定UserData中的MessageCallback字段来设置回调时,必须先开启视频点播的全局事件通知,并配置相应的回调事件类型后,此处的回调配置才能生效。

  4. 触发回调事件。

    完成事件通知配置后,您可以在视频点播服务中执行上传媒资文件(音/视频或图片),发起媒体处理(转码、截图等)等操作来触发相应的回调事件产生。

  5. 轻量消息队列(原 MNS)中查看消息。

    当满足产生回调事件条件时,点播服务端会将回调内容写入到您提供的队列中,您需要到消息服务中去主动接收消息,在消息详情中查看事件通知内容。

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

  6. 可选:轻量消息队列(原 MNS)中删除消息。

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

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

SDK示例

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

相关文档