當訊息傳送至提取訂閱者時,訂閱者必須在確認期限內處理並確認 (ACK) 訊息。否則,訂閱者必須透過呼叫來修改確認期限,藉此延長期限。
Pub/Sub 高階用戶端程式庫提供租約管理功能,可自動延長尚未收到確認的訊息期限。根據預設,用戶端程式庫可以透過定期發出 modifyAckDeadline 要求,將期限延長至一小時。Python、Go 和 Java 的高階用戶端程式庫會使用確認延遲的 99 百分位數來決定每次延長的長度。
與設定訂閱層級屬性相比,租用管理可讓您更精細地控管訊息的確認期限。如果您只使用訂閱層級的確認期限,就必須在低值和高值之間取得平衡。值越低,重複的可能性就越高,值越高,則會延遲重送失敗的訊息。判斷正確值可能很困難,尤其是當不同訊息的預期處理時間差異很大時。
如要進一步瞭解訂閱項目的屬性 (包括確認期限),請參閱「訂閱項目屬性」。
租約管理設定
您可以在高階用戶端程式庫中設定下列屬性,以控管租約管理。
回報延長期限上限。用戶端程式庫使用
modify acknowledgment deadline
要求延長訊息確認期限的時間上限。這個屬性可讓您決定訂閱端用戶端處理訊息的時間長度。每個致謝擴充功能的時間長度上限。延長每項
modify acknowledgment deadline
要求的確認期限的上限時間。這個屬性可讓您定義 Pub/Sub 重新傳送訊息所需的時間。當處理訊息的第一個訂閱器發生當機或失效,且無法再傳送modify acknowledgment deadline
要求時,系統就會重新傳送。每個回應擴充功能的最低時間長度。延長每個
modify acknowledgment deadline
要求確認期限的最低時間長度。您可以使用這項屬性,指定在訊息重新傳送前,必須經過的最短時間。
除非您啟用一次傳送一次,否則系統無法保證會遵守確認期限。
手動管理確認期限
為避免使用一元式拉取或低階用戶端程式庫時,訊息過期及重新傳送,請使用 modify acknowledgment deadline
要求延長確認期限。例外狀況是 Go 和 C++ 高階用戶端程式庫,這些程式庫會在使用一元式拉取時提供租約管理。請參閱以下有關使用租約管理的單一拉取作業範例:
C#
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 C# 環境。詳情請參閱 Pub/Sub C# API 參考說明文件。
Java
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Java 環境。詳情請參閱 Pub/Sub Java API 參考說明文件。
Node.js
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Node.js 環境。詳情請參閱 Pub/Sub Node.js API 參考說明文件。
Python
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Python 環境。詳情請參閱 Pub/Sub Python API 參考說明文件。
Ruby
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Ruby 環境。詳情請參閱 Pub/Sub Ruby API 參考說明文件。
後續步驟
瞭解可為訂閱項目設定的其他放送選項: