Kafka 支持以下三種消息傳遞語義:
1. At most once (至多一次):在這種語義中,消息可能會丟失,但絕不會被重復處理。生產者發送消息后,不會進行任何確認或重試,因此可能會出現消息丟失的情況。
2. At least once (至少一次):在這種語義中,消息絕不會丟失,但可能會被處理多次。生產者發送消息后,消費者可以通過應答機制來確保消息已正確處理,但如果網絡故障、消費者故障等情況導致生產者認為消息未被處理,則會重新發送消息。
3. Exactly once (僅一次):這是最嚴格的消息傳遞語義,確保每條消息只會被處理一次。Kafka 通過事務和冪等性機制實現了精確一次語義,以確保消息在生產者與消費者之間的傳遞過程中不會丟失也不會被重復處理。
由于 Exactly once 語義較為復雜且性能開銷較大,因此 At least once 通常是最常用的消息傳遞語義。在 Kafka 中,消費者可以根據自身需求選擇適合的消息傳遞語義來保證消息的可靠性和一致性。