比較 OptimizeTours 和 BatchOptimizeTours

Route Optimization API 提供兩種方法:

  • OptimizeTours 是一種同步方法,可傳回最佳化路徑以回應 OptimizeToursRequest。在處理要求並傳回 OptimizeToursResponse 或錯誤之前,用戶端必須維持與 Route Optimization API 的公開連線。
  • BatchOptimizeTours 是一種非同步方法,可接受一或多個 OptimizeToursRequest 及對應 OptimizeToursResponse 訊息的 URI,並傳回用於檢查批次完成的長時間執行作業 (LRO) (RESTgRPC) 的資源名稱。OptimizeToursRequest 會在背景進行處理,因此用戶端只會維持與 Route Optimization API 狀態的公開連線,時間只足以提交 {RO 狀態的 BatchOptimizeToursRequest/10} 或 10 狀態。GetOperationBatchOptimizeTours 讀取要求,並將回應寫入 Google Cloud Storage

應用實例

OptimizeTours 很適合用於解決小型和簡單的要求,或是解決時間不到幾分鐘的要求。維持與 Route Optimization API 的長效連線會在傳回解決方案之前,增加中斷風險。

BatchOptimizeTours 不需要與 Route Optimization API 保持長期連線,因此能在解決時間較長的情況下處理較大型的要求和要求。

長期執行的作業

LRO 會使用 GetOperation 方法從 Route Optimization API 讀取,藉此檢查批次的完成狀態。LRO 包含的 done 屬性,表示整個批次的處理程序是否完成,而 error 欄位會回報處理期間發生的錯誤。如果 done 為 true 且沒有 error,表示批次已順利完成。出現 error 表示部分或所有批次處理失敗。

BatchOptimizeTours 要求的典型生命週期如下:

  1. BatchOptimizeToursRequest 提交到 Route Optimization API,用來傳回 LRO 的資源名稱。
  2. 使用傳回的 LRO 資源名稱輪詢 GetOperation,直到 LRO 回應中出現 doneerror 屬性為止。
  3. 如果 done 為 true 且沒有錯誤,請從 BatchOptimizeTours 要求中指定的 Google Cloud Storage URI 讀取 OptimizeToursResponses。如果有 error,請檢查錯誤,並據此更新 Google Cloud Storage 中的 OptimizeToursRequest,然後根據觀察到的錯誤視情況重試。

您可以透過指令列或用戶端程式庫,以多種方式傳送 OptimizeToursBatchOptimizeTours 要求。

下一步:提出 API 要求