本文为您介绍事件通知常见问题。
事件通知公共常见问题
如何从回调中获取HTTPS的URL用于播放?
点播的HTTP回调和MNS回调,都不支持返回HTTPS的URL。如需要从回调中直接获取到HTTPS的URL用于视频播放,可参考下述步骤实现:
为域名配置HTTPS安全证书。
配置方法可参考HTTPS安全加速设置,如已配置则可以跳过此步骤。
在接收回调的代码中使用替换操作,以实现将HTTP的URL替换为HTTPS的URL。
例如Java中,可使用
replace
进行替换。
如何实现多地址回调?
通过点播控制台或API/SDK方式(SetMessageCallback - 设置事件通知配置接口)配置回调时,是针对点播服务全局的配置,且只能回调到一个地址。如果您有多地址回调的使用场景,可参考下述方案实现:
方案一:在
UserData
中指定回调地址在调用接口上传媒资文件或发起媒体处理任务时(例如CreateUploadVideo - 获取音视频上传地址和凭证、SubmitTranscodeJobs - 提交媒体转码作业等接口),通过指定请求参数
UserData
中的MessageCallback字段,来设置其他回调地址。详细信息,请参见设置多地址回调。说明本方案仅支持HTTP回调方式。
本方案需要在已开启全局的事件通知并配置相应的回调事件类型后才能使用,否则本方案设置的回调不生效。
方案二:区分应用设置独立回调地址
使用多应用体系,可以为每个应用设置独立的消息回调方式和地址。详细内容请参见多应用体系概述。
HTTP回调的常见问题
没有收到HTTP回调该如何排查?
首先需要登录视频点播控制台 ,在点播控制台左侧导航栏的配置管理,选择 ,确认是否开启回调功能,并且查看是否订阅了所需要的回调。
执行下述示例,查看是否有正常返回,如果没有,则排查回调地址接收服务是否有问题。注意将
http://example.aliyundoc.com/processMessage
替换为您设置的HTTP回调地址。curl -l -i -H "Content-type: application/json" -X POST -d '{"VideoId":"videoId","EventType":"FileUploadComplete","Status":"success","Size":1439213}' http://example.aliyundoc.com/processMessage
回调超时时间是多少?重试几次?重试间隔多久?
HTTP回调超时时间默认为5秒,最多重试3次,每次间隔1秒。
超过重试次数后,消息会被丢弃吗?这样如何保证消息不丢失?
如果您的接收服务异常,如崩溃、重启、网络不可达等,超过重试次数消息都会被丢弃。如果要保证消息不丢失,推荐使用MNS回调。
HTTP回调支持302跳转吗?
HTTP回调只支持200响应,出于安全考虑,不支持302、301等。
收到多次重复回调是什么原因?
HTTP回调只有收到200响应码时才认为是成功,否则均认为失败,并重试回调,最多尝试三次。
HTTP鉴权有什么作用?
HTTP鉴权是在回调过程增加特殊HTTP头,供回调地址提供方进行校验(防止非阿里云点播服务调用该接口,造成安全问题)。具体是否校验可由用户自行判断。
轻量消息队列(原MNS)回调的常见问题
轻量消息队列(原MNS)回调队列中没有消息是什么原因?
未授权点播服务访问轻量消息队列(原 MNS)、Endpoint不是公网或者队列名称不对会导致消息投递失败。
消息存活时间设置过小(建议使用3600 秒),消息被消费前已经释放。
消息最大长度设置过小(建议使用默认值65536 Byte),可能会导致消息投递失败。
轻量消息队列(原MNS)回调收到重复消息是什么原因?
消息被消费后,变为短暂不可见,需要手动或调用接口删除消息,否则一段时间后消息可以被再次消费。
轻量消息队列(原MNS)回调是否支持鉴权?
点播服务经过授权写入用户队列,非经授权无操作权限,安全性比较高,所以一般不需要鉴权。
轻量消息队列(原MNS)回调支持哪些区域?
如果视频保存在中国内地区域(如 华北2 ,华东2 ),投递消息到华东2(上海)区域之外的队列存在较短时间的延迟,建议使用 华东2(上海) 区域的队列。
如果视频保存在 新加坡区域 存储,建议使用新加坡区域的消息队列。
如果视频保存在 法兰克福区域 存储,建议使用法兰克福区域的消息队列。
是否能跨区域配置轻量消息队列(原MNS)进行回调?
是否能跨区域配置轻量消息队列(原 MNS)进行回调,比如视频存储和处理在华东2(上海)或华北2(北京),但MNS队列在华南1(深圳)。功能上是支持的,只是要考虑下网络延迟,可能消息写入会稍慢一些,建议尽量配置和存储地址在同一区域,如华东2。