Prendiamo quelli in ordine :)
1 - Quando un produttore sta producendo un messaggio - Specifica l'argomento a cui desidera inviare il messaggio, giusto? Si preoccupa delle partizioni?
Per impostazione predefinita, al produttore non interessa il partizionamento. Hai la possibilità di utilizzare un partizionatore personalizzato per avere un controllo migliore, ma è totalmente opzionale.
2 - Quando un abbonato è in esecuzione - Specifica il suo ID di gruppo in modo che possa far parte di un gruppo di consumatori dello stesso argomento o di diversi argomenti a cui questo gruppo di consumatori è interessato?
Sì, i consumatori si uniscono (o creano se sono soli) a un gruppo di consumatori per condividere il carico. Nessuno dei due consumatori dello stesso gruppo riceverà mai lo stesso messaggio.
3 - Ogni gruppo di consumatori ha una partizione corrispondente sul broker o ogni consumatore ne ha una?
Né. A tutti i consumatori di un gruppo di consumatori viene assegnato un insieme di partizioni, a due condizioni: non esistono due consumatori dello stesso gruppo con una partizione in comune e al gruppo di consumatori nel suo insieme viene assegnata ogni partizione esistente.
4 - Le partizioni create dal broker non sono quindi motivo di preoccupazione per i consumatori?
Non lo sono, ma da 3 puoi vedere che è totalmente inutile avere più consumatori rispetto alle partizioni esistenti, quindi è il tuo massimo livello di parallelismo da consumare.
5 - Poiché si tratta di una coda con un offset per ogni partizione, è responsabilità dell'utente specificare quali messaggi desidera leggere? Deve salvare il suo stato?
Sì, i consumatori salvano un offset per argomento per partizione. Questo è totalmente gestito da Kafka, non preoccuparti.
6 - Cosa succede quando un messaggio viene eliminato dalla coda? - Ad esempio: la conservazione è stata di 3 ore, quindi il tempo passa, come viene gestito l'offset su entrambi i lati?
Se un consumatore richiede mai un offset non disponibile per una partizione sui broker (ad esempio, a causa della cancellazione), entra in una modalità di errore e alla fine si reimposta per questa partizione sul messaggio più recente o più vecchio disponibile (a seconda del il valore di configurazione auto.offset.reset) e continuare a lavorare.