比較 OptimizeTours 和 BatchOptimizeTours

Route Optimization API 提供兩種方法:

  • OptimizeTours 是一種同步方法,可根據 OptimizeToursRequest 傳回最佳化的路徑。用戶端必須保持開放與 Route Optimization API 的連線,直到要求處理完畢並傳回 OptimizeToursResponse 或錯誤為止。
  • BatchOptimizeTours 是一種非同步方法,可接受一或多個 OptimizeToursRequest 和對應的 OptimizeToursResponse 訊息的 URI,傳回用於檢查批次完成的長時間執行作業 (LRO) (RESTgRPC) 的資源名稱。OptimizeToursRequest 會在背景處理,因此用戶端只會維護對 Route Optimization API 的開放連線,以便檢查 L10/狀態。BatchOptimizeToursRequestGetOperationBatchOptimizeTours 會讀取來自 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 要求。

下一步:傳送要求