本文介紹輕量訊息佇列(原 MNS)如何保證多個消費者訪問同一訊息佇列,不會丟失訊息或者重複消費訊息的問題。
輕量訊息佇列(原 MNS)中每個隊列都具有可配置的不可見時間段屬性(即隊列的取出訊息隱藏時間長度屬性)。
當隊列中的某條訊息被取出後,在不可見時間段內,其他消費者將無法擷取到該條訊息。
如果消費者在不可見時間內完成了消費,則需要通過臨時控制代碼(ReceiptHandle)進行訊息的刪除。
如果消費者在不可見時間內未完成消費,則需要發送不可見時間段的延長請求(ChangeVisibilityTimeout),否則訊息將會在不可見時間段結束後重新被其他消費者取出。