本頁說明 Pub/Sub 訂閱項目如何保留已發布的訊息,以及如何設定這項行為。您可能會基於下列原因變更預設設定:
- 調整未確認訊息在刪除前,可供訂閱項目使用的時間長度。
- 啟用重播先前確認的訊息。
總覽
建立訂閱項目後,Pub/Sub 會開始代表該訂閱項目保留已發布的訊息。根據預設,Pub/Sub 會在訊息獲得確認後立即從訂閱項目中捨棄該訊息,並將未確認的訊息保留 7 天。
您可以在建立或更新訂閱項目時設定保留期限。 最短保留時間為 10 分鐘,最長為 31 天。
您也可以啟用訂閱項目,保留已確認的訊息,最多可保留設定的保留時間。保留已確認的訊息後,您就能在保留期間內重播先前已確認的訊息。如要進一步瞭解如何重播訊息,請參閱「使用搜尋功能重播及清除訊息」。
如果訂閱項目設為保留已確認的訊息,系統會向訂閱項目的專案收取保留已確認訊息的儲存費用。
如果同時在訂閱項目的主題上啟用訊息保留功能,只有在訊息存在時間超過訂閱項目保留時間和主題保留時間的最大值時,系統才會從訂閱項目中刪除訊息。詳情請參閱「啟用主題訊息保留功能」。
設定訊息保留功能
如要建立保留已確認訊息的訂閱項目,請執行下列步驟:
控制台
前往 Google Cloud 控制台的「Pub/Sub subscriptions」(Pub/Sub 訂閱項目) 頁面。
按一下「Create Subscription」 (建立訂閱項目)。
在「Subscription ID」(訂閱 ID) 欄位中,輸入訂閱 ID。
在「訊息保留時間長度」部分,選取要保留訊息的天數、小時和分鐘數。
勾選「保留已確認的訊息」核取方塊。
按一下「Create Subscription」 (建立訂閱項目)。
gcloud
使用
gcloud pubsub subscriptions create:
gcloud pubsub subscriptions create SUBSCRIPTION_ID \
--message-retention-duration=5d \
--retain-acked-messages
將 SUBSCRIPTION_ID 替換為訂閱 ID。
如省略 --message-retention-duration 標記,系統會依預設保留訊息 7 天。
如要更新現有訂閱方案的訊息保留設定,請按照下列步驟操作:
控制台
在「Pub/Sub subscriptions」(Pub/Sub 訂閱項目) 頁面中選取訂閱項目。
按一下訂閱項目詳細資料頁面頂端的「編輯」。
在「訊息保留時間」部分,更新保留訊息的天數、時數和分鐘數。
選取或取消選取「保留已確認的訊息」核取方塊。
按一下「更新」,即可儲存訂閱方案變更。
gcloud
使用 gcloud pubsub subscriptions update 指令:
gcloud pubsub subscriptions update SUBSCRIPTION_ID \
--message-retention-duration=1d \
--retain-acked-messages
如要停用已確認訊息的保留功能,請使用 update 指令,並加上 --no-retain-acked-messages 旗標:
gcloud pubsub subscriptions update SUBSCRIPTION_ID \
--no-retain-acked-messages