本頁說明所有 Pub/Sub 訂閱類型通用的屬性。建立或更新訂閱項目時,可以設定這些屬性。
訊息保留時間
「訊息保留時間」選項可指定 Pub/Sub 在發布訊息後保留訊息的時間長度。超過訊息保留時間後,Pub/Sub 可能會捨棄訊息,與訊息的確認狀態無關。如要在訊息保留時間內保留已確認的訊息,請參閱「重播與捨棄訊息」。
「訊息保留時間長度」選項的值如下:
- 預設值 = 7 天
- 最小值 = 10 分鐘
- 最大值 = 31 天
未確認的訊息可能是因為閒置訂閱項目、備份需求或處理速度緩慢所致。如果能在 24 小時內處理訊息,就不會產生額外費用。如要避免產生新費用,請按照下列方式管理這些情況:
閒置訂閱項目。刪除閒置的訂閱項目,避免產生訂閱訊息保留費用。
備份儲存空間。如果使用訂閱保留功能做為備份儲存空間,可以改用其他儲存空間選項,例如主題訊息保留或保留已確認訊息。主題訊息保留功能只會在主題層級儲存訊息一次,所有訂閱項目都能在需要時取用。
處理作業延遲。盡可能新增更多訂閱者,以便在一天內處理訊息。
保留已確認的訊息
如果您指定「訊息保留時間」,也可以指定是否要保留已確認的訊息。
您可以透過「保留已確認的訊息」選項,在指定的訊息保留時間內保留已確認的訊息。這個選項會增加訊息儲存費用。詳情請參閱儲存空間費用。
有效期限
你可以使用「到期期限」選項延長訂閱方案的到期期限。
如果訂閱項目沒有任何訂閱者活動,或訂閱項目屬性沒有任何變更,就會過期。如果 Pub/Sub 偵測到訂閱者活動,或您更新任何訂閱屬性,訂閱刪除時鐘就會重新啟動。訂閱者活動包括公開連線、進行中的提取作業或完成的推送作業。
如果指定到期時間,該值至少須等於「訊息保留時間」選項中指定的訊息保留時間。
「到期時間」選項的值如下:
- 預設值 = 31 天
- 最小值 = 1 天
為避免訂閱項目過期,請將到期時間範圍設為 never expire。
確認期限
「確認期限」選項會指定初始期限,如果未確認訊息,系統會在期限過後再次傳送。您可以傳送後續的 ModifyAckDeadline 要求,逐一延長訊息的確認期限。
「確認期限」選項的值如下:
- 預設值 = 10 秒
- 最小值 = 10 秒
- 最大值 = 600 秒
在某些情況下,Pub/Sub 用戶端程式庫可以控制傳送速率,並動態修改確認期限。這麼做的話,系統可能會在您設定的確認期限前重新傳送訊息。如要覆寫此行為,請使用 minDurationPerAckExtension 和 maxDurationPerAckExtension。如要進一步瞭解如何使用這些值,請參閱用戶端程式庫中的「只傳送一次」傳送支援。
單一訊息轉換 (SMT)
您可以透過 SMT 功能,直接在 Pub/Sub 中簡單修改訊息屬性和資料。這項功能可在訊息傳送至訂閱端之前,進行資料清理、篩選或格式轉換。
詳情請參閱「SMT 總覽」和「使用 SMT 建立訂閱項目」。
訂閱項目篩選器
使用「訂閱項目篩選器」選項,指定含有篩選運算式的字串。如果訂閱項目設有篩選器,則只會傳送符合篩選條件的訊息。Pub/Sub 服務會自動確認不符合篩選條件的訊息。
您可以依訊息屬性篩選訊息,但無法依訊息中的資料篩選。
如未指定,訂閱項目不會篩選訊息,訂閱者會收到所有訊息。
篩選器套用後即無法變更或移除。
如果訂閱項目設有篩選條件,當您收到訊息時,Pub/Sub 會自動確認訊息,您不必支付這些訊息的輸出費用。您需要為這些訊息支付訊息傳送費用和搜尋相關儲存空間費用。
詳情請參閱「篩選訂閱訊息」。
訊息排序
根據預設,Pub/Sub 可能不會按照訊息發布順序傳送訊息。如果訂閱項目已啟用「訊息排序」,系統就會按照發布順序,接收在同一區域中傳送且排序鍵相同的訊息。
如要依序接收訊息,發布者必須設定排序鍵。如果訊息沒有排序鍵,可能無法依序接收。
使用依序傳送功能時,系統會先處理較早傳送的訊息確認,再處理較晚傳送的訊息確認。詳情請參閱「訂購訊息」。
無效信件主題
如果訊息在經過設定的傳送嘗試次數後仍無法傳送,或是訂閱者無法確認訊息,Pub/Sub 可以將訊息重新發布至設定的無效信件主題。
如果設定無效信件主題,您也可以指定傳送嘗試次數上限。預設值為 5 次嘗試遞送。 您可以將嘗試次數上限設為 5 到 100 之間的任何數字 (含 5 和 100)。
如果無法傳送訊息的主題與訂閱項目位於不同專案,您也必須指定無法傳送訊息的主題的專案 ID。
詳情請參閱「Dead-letter 主題」。
重試政策
如果超過確認期限,或訂閱端傳回否定確認,Pub/Sub 就會再次傳送訊息。這項重試遞送作業稱為訂閱項目的「重試政策」。
根據預設,訂閱項目的重試政策會設為「立即重試」。如果選擇這個選項,當確認期限到期或訂閱端傳回否定確認時,Pub/Sub 就會重新傳送訊息。
您也可以將值設為「在指數輪詢延遲時間過後重試」。 在這種情況下,您必須指定輪詢時間上限和下限。
以下是設定輪詢持續時間上限和下限值的幾項準則:
如果設定輪詢持續時間上限,輪詢持續時間下限預設為 10 秒。
如果設定輪詢持續時間下限,輪詢持續時間上限的預設值為 600 秒。
您可以指定的最長輪詢時間為 600 秒。
重試政策和批次訊息
如果訊息位於批次中,發生下列任一情況時,Pub/Sub 會啟動指數輪詢:
訂閱者會針對批次中的每則訊息傳送否定確認。
確認期限已過。
重試政策和推送訂閱
如果您是透過推送訂閱項目接收訊息,Pub/Sub 可能會在推送退避後重新傳送訊息,而不是指數退避時間。如果推送輪詢時間長於指數輪詢時間,Pub/Sub 會在推送輪詢時間過後,重新傳送未確認的訊息。