开发者社区> 问答> 正文

如何配置ArchiveManager(二)

在OAS服务协议中,下载是通过提交任务(Job)的形式存在的,按业务类型分为三类,分别是:

  1. 提交下载Archive任务
  2. 提交下载Inventory任务
  3. 下载Job输出

用户需要提交Job来获得他需要的数据,一个Job从创建到完成需要经历三步骤:
  1. 用户 通过接口提交相应类型的Job;
  2. OAS 接收到Job并安排其执行;
  3. 用户 将已完成Job的输出内容下载到本地。

[backcolor=transparent]注:Job在OAS服务端是异步执行的,一个Job从提交到执行完毕这个过程一般耗时在几分钟到四小时之间。所以,所有下载类接口都是 [backcolor=transparent]异步接口 即全部以 [backcolor=transparent]Async 结尾。更多关于Job的信息,参考《 OAS API文档 4.4 Job 操作》。

提交下载Archive Job


接口定义如下: /**
* 提交请求下载archive任务请求
* @param vaultName 目标vault名称
* @param archiveId 需下载的archiveId
* @return 返回Job信息跟踪器,可用来获取Job信息,如jobId,eTag校验信息
* @throws OASClientException
* @throws OASServerException
*/
public JobMonitor downloadAsync(String vaultName, String archiveId)
    throws OASClientException, OASServerException;

/**
* 提交请求下载archive任务请求
* @param vaultName 目标vault名称
* @param archiveId 需下载的archiveId
* @param description 备注
* @return 返回Job信息跟踪器,可用来获取Job信息,如jobId,eTag校验信息
* @throws OASClientException
* @throws OASServerException
*/
public JobMonitor downloadAsync(String vaultName, String archiveId, String description)
    throws OASClientException, OASServerException;

/**
* 提交请求下载archive任务请求
* @param vaultName 目标vault名称
* @param archiveId 需下载的archiveId
* @param range 指定要下载的范围
* @return 返回Job信息跟踪器,可用来获取Job信息,如jobId,eTag校验信息
* @throws OASClientException
* @throws OASServerException
*/
public JobMonitor downloadWithRangeAsync(String vaultName, String archiveId, Range range)
    throws OASClientException, OASServerException;

/**
* 提交请求下载archive任务请求
* @param vaultName 目标vault名称
* @param archiveId 需下载的archiveId
* @param range 指定要下载的范围
* @param description 备注
* @return 返回Job信息跟踪器,可用来获取Job信息,如jobId,eTag校验信息
* @throws OASClientException
* @throws OASServerException
*/
public JobMonitor downloadWithRangeAsync(
    String vaultName, String archiveId, Range range, String description)
    throws OASClientException, OASServerException;


示例代码: JobMonitor jobMonitor = archiveManager.downloadAsync(
    "[yourVaultName]", "[yourArchiveId]");

// JobMonitor提供的阻塞等待方法,直到Job状态完结
// 实际场景中,不建议如此使用,因为Job的执行时间在几分钟到4小时不等
// 长时间阻塞程序不是明智的做法
jobMonitor.waitUntilFinished();
System.out.println("Job has been comitted successfully.");
System.out.println("Your JobId=" + jobMonitor.getJobId());


关于JobMonitor的具体使用方法,请阅读本文档 [backcolor=transparent]下载 章节的最后一部分 [backcolor=transparent]JobMonitor类使用讲解

提交Inventory任务


根据给定的Vault的名称, 提交Iventory任务后,OAS将准备好该Vault所包含文件的最后一次扫描信息,待Job执行完毕,可以将Vault的文件信息下载到本地。接口定义: /**
* 根据vault名称获得vault的目录信息
* @param vaultName 目标vault名称
* @return
*/
public JobMonitor downloadInventoryAsync(String vaultName)
    throws OASClientException, OASServerException;

/**
* 根据vault名称获得vault的目录信息
* @param vaultName 目标vault名称
* @param description 备注
* @return
* @throws OASClientException
* @throws OASServerException
*/
public JobMonitor downloadInventoryAsync(
    String vaultName, String description)
    throws OASClientException, OASServerException;



下载Job输出


根据给定的 Vault名称 和 JobID,下载Job的结果至本地文件。接口定义: /**
* 下载Job输出到文件,只有当Job的状态是Succeeded或Failed(到达终结状态)时,才能执行此操作
* @param vaultName 目标vault名称
* @param jobId 要下载的jobId
* @param file 保存的目标文件
* @return 保存的目标文件的句柄对象
* @throws OASClientException
* @throws OASServerException
*/
public File downloadJobOutput(String vaultName, String jobId, File file)
    throws OASClientException, OASServerException;

/**
* 下载Job输出到文件,只有当Job的状态是Succeeded或Failed(到达终结状态)时,才能执行此操作
* @param vaultName 目标vault名称
* @param jobId 要下载的jobId
* @param file 保存的目标文件
* @return 异步任务传输对象,可获得传输信息
* @throws OASClientException
* @throws OASServerException
*/
public BaseTransfer<File> downloadJobOutputAsync(
    String vaultName, String jobId, File file)
       throws OASClientException, OASServerException;

展开
收起
云栖大讲堂 2017-10-26 14:49:00 1804 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载