Kafka usato precedentemente solo una gestione dei messaggi almeno una volta . Dalla documentazione di Kafka :
When publishing a message we have a notion of the message being
"committed" to the log. Once a published message is committed it
will not be lost as long as one broker that replicates the partition
to which this message was written remains "alive".
In tale scenario, nulla ha impedito allo stesso produttore di scrivere lo stesso messaggio più volte, ad esempio in caso di alcuni errori di rete o latenze.
nuova garanzia esattamente una volta ora si assicura che se un produttore scrive lo stesso messaggio più volte, verrà impegnato una sola volta nel registro. Funziona utilizzando un numero di sequenza per deduplicare i batch di messaggi ridondanti.
Tuttavia, questo numero di sequenza è univoco preso solo insieme a un PID, un numero univoco che può essere mappato da un ID transazionale che identifica in modo univoco un produttore nella sua configurazione. I flussi dettagliati sono spiegati in dettagli in questo articolo .
Ciò implica che Kafka dedurrà solo messaggi identici dallo stesso produttore. Non deduplicherà i messaggi inviati da due produttori diversi. Quindi sì, per deduplicare tra diversi produttori, avrai bisogno di un consumatore che trova gli stessi dati in diversi messaggi. E questo consumatore agirà come produttore o su un altro broker o su un argomento aggiuntivo sullo stesso broker.