Simple Message Queue (formerly MNS)支援設定訊息的可見度逾時時間,本文介紹訊息可見、不可見及可見度逾時時間的定義和使用方法。
可見(Visible)和不可見(Unvisible)狀態
可見狀態:訊息處於可見狀態時,意味著訊息可以被消費者(接收和處理訊息的服務或應用程式)讀取和接收。
不可見狀態:當消費者接收了一條訊息後,這條訊息會進入不可見狀態,意味著其他消費者在此期間無法接收到這條訊息,以免訊息被多個消費者同時處理。
可見度逾時時間(Visibility Timeout)
可見度逾時時間:是指從消費者接收訊息開始到允許其它消費者再次接收該訊息的時間段。
當消費者從隊列接收訊息時,訊息仍然保留在隊列中,但對其它消費者暫時不可見。暫時不可見狀態由可見度逾時機制控制,防止其它消費者在該訊息正在處理時重複處理同一條訊息。
設定和修改可見度逾時時間
設定可見度逾時時間
建立及編輯隊列詳情時,可設定可見度逾時時間。預設值為30秒,取值範圍為[1, 43200]秒,即1秒~12小時。詳細操作,請參見建立隊列。
修改可見度逾時時間
在用戶端調用ChangeMessageVisibility方法修改當前訊息的逾時時間,您可以根據業務需求縮短或延長逾時時間。詳細說明,請參見ChangeMessageVisibility。
合理設定可見度逾時時間
如果可見度逾時時間設定得太長(例如設定為12個小時),遇到某個消費者由於應用程式錯誤、崩潰或串連失敗等問題無法在可見度逾時時間到期之前刪除該訊息,其它消費者需要等待12個小時之後才能再次消費到這些訊息。所以請根據業務情境合理設定可見度逾時時間的數值。