與傳統(tǒng)的消息傳遞系統(tǒng)相比对湃,消息在被確認(rèn)后不會立即被刪除崖叫。Pulsar在接收消息確認(rèn)時僅更新cursor,只有在所有訂閱已經(jīng)使用它之后才有可能刪除消息。
1 Message retention
Pulsar還允許將消息保留更長時間拍柒,即使所有訂閱已經(jīng)消費(fèi)了它們心傀,這是通過配置消息保留期來完成的。下圖說明了如何在具有2個訂閱的主題分區(qū)中保留消息拆讯,訂閱A已經(jīng)消費(fèi)了M6之前的所有消息脂男,訂閱B已經(jīng)消費(fèi)M10之前的所有消息。這意味著M6之前的所有消息(灰色框中)都可以安全刪除种呐,訂閱A仍未使用M6和M9之間的消息宰翅,無法刪除它們。如果主題分區(qū)配置了消息保留期爽室,則即使A和B已經(jīng)消耗它們汁讼,消息M0到M5也將在配置的時間段內(nèi)保持不變。
2 Message expiry
除了消息保留(message retention)阔墩,Pulsar還支持消息生存時間(TTL)嘿架。如果消息在配置的TTL時間段內(nèi)沒有被消費(fèi)者使用,則消息將自動標(biāo)記為已確認(rèn)戈擒。消息保留和消息TTL之間的區(qū)別在于消息保留適用于標(biāo)記為已確認(rèn)并將其設(shè)置為已刪除的消息眶明,保留是對主題應(yīng)用的時間限制,而TTL適用于未使用的消息筐高。因此搜囱,TTL是訂閱消費(fèi)的時間限制。下圖說明了Pulsar中的TTL柑土。如果訂閱B沒有活消費(fèi)者蜀肘,則在配置的TTL時間段過后,消息M10將自動標(biāo)記為已確認(rèn)稽屏,即使沒有消費(fèi)者實(shí)際讀取該消息扮宠。