Elaborazione solo dopo lo stesso messaggio prodotto da due produttori

0

Se ho due produttori diversi che potrebbero produrre lo stesso messaggio per un broker Kafka, come posso garantire che solo una delle due occorrenze del messaggio venga elaborata?

È l'unico modo per avere un argomento di input, quindi un consumatore che deduplica e salva su un argomento di output?

Oppure le relativamente nuove funzionalità " esattamente una volta " possono essere utilizzate in qualche modo per questo problema?

    
posta Syed Jafri 06.09.2018 - 11:57
fonte

1 risposta

1

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.

    
risposta data 08.09.2018 - 19:25
fonte

Leggi altre domande sui tag