比较 OptimizationTours 和 BatchOptimizeTours

Route Optimization API 提供两种方法:

  • OptimizeTours 是一种同步方法,可在响应 OptimizeToursRequest 时返回优化路由。在处理请求并返回 OptimizeToursResponse 或错误之前,客户端必须保持与 Route Optimization API 的连接处于打开状态。
  • BatchOptimizeTours 是一种异步方法,它接受一条或多条 OptimizeToursRequest 及相应 OptimizeToursResponse 消息的 URI,返回长时间运行的操作(LRO,用于检查批量完成情况)的资源名称(RESTgRPC)。OptimizeToursRequest 会在后台处理,因此客户端保持与 Route Optimization API 的连接仅能保持与 Route Optimization API 的开放连接的时长,使其能够提交 Route Optimization API 或调用状态。BatchOptimizeToursRequest/}GetOperationBatchOptimizeTours 可从 Google Cloud Storage 读取请求并向其写入响应。

应用场景

OptimizeTours 适用于解决简单的小请求,或解决时间只有几分钟或更短的请求。维护与 Route Optimization API 的长期连接会增加在返回解决方案之前发生中断的风险。如需了解详情,请参阅使用超时

BatchOptimizeTours 可以处理较大的请求和解决时间更长的请求,因为它不需要与 Route Optimization API 建立长期有效的连接。

长时间运行的操作

使用 GetOperation 方法从 Route Optimization API 读取 LRO,以检查批次的完成状态。LRO 包含一个 done 属性(用于指示整个批次的处理是否已完成),还有一个 error 字段用于报告处理过程中遇到的错误。如果 done 为 true,并且不存在 error,则表示该批次已成功完成。如果存在 error,则表示部分或全部批量处理失败。

BatchOptimizeTours 请求的典型生命周期如下所示:

  1. 向路线优化 API 提交 BatchOptimizeToursRequest,它会返回 LRO 的资源名称。
  2. 使用返回的 LRO 资源名称轮询 GetOperation,直到 doneerror 属性出现在 LRO 响应中。
  3. 如果 done 为 true,并且没有错误,则从 BatchOptimizeTours 请求中指定的 Google Cloud Storage URI 中读取 OptimizeToursResponses。如果存在 error,请检查错误,在 Google Cloud Storage 中相应地更新 OptimizeToursRequest,并根据观察到的错误视情况重试。

您可以通过多种方式发送 OptimizeToursBatchOptimizeTours 请求,包括从命令行或使用客户端库。

下一步:发出 API 请求