查看 Application Integration 支援的連接器。
錯誤處理簡介
在應用程式整合中,測試及發布整合項目,或執行整合項目時,可能會發生錯誤。這些錯誤可能會因各種用戶端和伺服器端問題而發生,大致可分為以下幾類:
- 永久性錯誤: 所有用戶端錯誤,例如驗證失敗、資料驗證錯誤,都視為永久性錯誤。永久性錯誤會導致工作永久失敗。
- 暫時性錯誤:所有伺服器端錯誤都視為暫時性錯誤,例如 HTTP 503 (服務無法使用)、HTTP 400 (錯誤要求)。暫時性錯誤會導致暫時性任務失敗。
錯誤訊息會顯示在下列位置:
- 執行記錄頁面:顯示執行整合作業時遇到的錯誤。每個整合執行作業都有一個獨立的記錄項目。如要瞭解執行記錄檔頁面,請參閱「執行記錄檔」。
- 整合編輯器頁面:顯示發布整合時發生的錯誤。錯誤會顯示在整合編輯器頁面的底部。如要瞭解整合服務編輯器頁面,請參閱「整合服務編輯器」。
如要瞭解可能遇到的錯誤代碼清單,請參閱「錯誤代碼」。
錯誤處理方法
應用程式整合支援下列錯誤處理方法,可擲回、擷取、重試及自訂整合作業中遇到的錯誤:
- 錯誤處理策略:工作錯誤處理策略會指定在工作因暫時性錯誤而失敗時,應採取的動作。您可以為同步和非同步執行模式指定不同的錯誤處理策略。
- 錯誤偵測器:錯誤偵測器會定義自訂方式,用於處理整合作業中已識別的觸發條件、工作或邊緣條件的失敗情形。您可以在單一整合中定義一或多個錯誤捕捉器,以便處理工作錯誤和/或執行失敗。每個錯誤擷取器都可以使用觸發條件 (稱為「錯誤擷取器觸發條件」) 來執行一組已設定的整合工作,這些工作會自訂處理錯誤。
您可以使用錯誤處理方法,針對同步和非同步的整合執行模式:
- 同步執行作業:在同步模式中,整合作業執行完畢後,系統會立即提供執行結果。如果您希望在整合作業完成後立即取得執行結果,同步模式就很實用。觸發條件會以同步模式執行整合作業,包括:
-
非同步執行作業:非同步執行作業採用「發送並遺忘」模型。如果整合作業需要很長的時間才能執行,或是執行結果不需要在整合作業完成後立即顯示,非同步模式就很實用。以下是會以非同步模式執行整合作業的觸發事件:
- 所有非同步執行作業都會以非同步模式執行。常見的非同步模式包括但不限於:
- 從暫停或核准工作中恢復的執行作業,即使初始執行作業是同步模式,也會以同步模式執行。
最佳做法
在整合中同時使用錯誤處理策略和錯誤擷取器。對於任何錯誤,整合會遵循錯誤處理部分中定義的策略。在用盡已設定的錯誤處理策略後,系統會觸發錯誤擷取器邏輯。使用系統變數擷取錯誤代碼和錯誤訊息的值,並傳送至錯誤擷取器資料流。
範例
假設您有用於建立訂單的整合流程,新訂單會在 MySQL 適用的 Cloud SQL 中建立。這個流程會使用連接器工作 (在本例中為「Create an order」) 連線至 MySQL 適用的 Cloud SQL。如果資料庫發生異常,連接器工作在將新訂單插入資料庫時會擲回錯誤。最佳做法是,您必須在整合中同時使用錯誤處理策略和錯誤擷取器。
如要新增錯誤處理策略,請在整合設計工具中按一下連接器任務,開啟任務設定窗格。下圖顯示為「Create an order」連接器工作設定的錯誤處理策略:
如要新增錯誤處理策略,請在整合設計工具中按一下「Call REST Endpoint」任務,開啟任務設定窗格。下圖顯示為「Call REST Endpoint」任務設定的錯誤處理策略:
如要新增錯誤擷取器,請在整合設計工具中按一下「Call REST Endpoint」任務,開啟任務設定窗格。在「Error Catcher」部分中,新增錯誤擷取器詳細資料。下圖顯示為「Call REST Endpoint」任務設定的錯誤擷取器:
錯誤代碼
下表說明您可能會遇到的錯誤,以及錯誤的對應原因。Application Integration 會使用 google.rpc.Code
中定義的標準錯誤代碼。
如要瞭解應用程式整合錯誤和各種錯誤處理策略,請參閱「錯誤和錯誤處理」一文。
標準例外狀況類型 | 標準化代碼 | HTTP 代碼 | 說明 |
---|---|---|---|
FailedPreconditionException | FAILED_PRECONDITION |
400 | 無法在目前的系統狀態下執行要求。 |
BadRequestException | INVALID_ARGUMENT |
400 | 用戶端指定的引數無效。請查看錯誤訊息和錯誤詳細資料,瞭解詳情。 |
UnauthenticatedException | UNAUTHENTICATED |
401 | OAuth 權杖遺漏、無效或過期,因此無法驗證要求。 |
ForbiddenException | PERMISSION_DENIED |
403 | 用戶端權限不足。這可能是因為 OAuth 權杖的範圍不正確、用戶端沒有必要的權限,或 API 尚未啟用所致。 |
NotFoundException | NOT_FOUND |
404 | 找不到指定的資源。 |
AlreadyExistsException | ALREADY_EXISTS |
409 | 用戶端嘗試建立的資源已存在。 |
InternalError | INTERNAL |
500 | 發生內部伺服器錯誤。通常是伺服器錯誤。如果任一工作或觸發條件設定錯誤,就可能發生這種情況。 |
UnimplementedException | UNIMPLEMENTED |
501 | 伺服器未執行 API 方法。 |
ServiceUnavailableException | UNAVAILABLE |
503 | 服務無法使用,通常是因伺服器停止運作所致。 |
AbortedException | ABORTED |
409 | 回應大小過大。 |