与传统的消息传递系统相比,消息在被确认后不会立即被删除。Pulsar在接收消息确认时仅更新cursor,只有在所有订阅已经使用它之后才有可能删除消息。
1 Message retention
Pulsar还允许将消息保留更长时间,即使所有订阅已经消费了它们,这是通过配置消息保留期来完成的。下图说明了如何在具有2个订阅的主题分区中保留消息,订阅A已经消费了M6之前的所有消息,订阅B已经消费M10之前的所有消息。这意味着M6之前的所有消息(灰色框中)都可以安全删除,订阅A仍未使用M6和M9之间的消息,无法删除它们。如果主题分区配置了消息保留期,则即使A和B已经消耗它们,消息M0到M5也将在配置的时间段内保持不变。
image.png2 Message expiry
除了消息保留(message retention),Pulsar还支持消息生存时间(TTL)。如果消息在配置的TTL时间段内没有被消费者使用,则消息将自动标记为已确认。消息保留和消息TTL之间的区别在于消息保留适用于标记为已确认并将其设置为已删除的消息,保留是对主题应用的时间限制,而TTL适用于未使用的消息。因此,TTL是订阅消费的时间限制。下图说明了Pulsar中的TTL。如果订阅B没有活消费者,则在配置的TTL时间段过后,消息M10将自动标记为已确认,即使没有消费者实际读取该消息。
image.png image.png
网友评论