Kafka suddivide i messaggi in entrata in partizioni, in base alla partizione assegnata dal produttore. I messaggi dalle partizioni vengono quindi consumati dai consumatori in diversi gruppi di consumatori.Apache Kafka è appropriato per l'uso come coda di attività?
Questa architettura mi rende cauto nell'usare Kafka come coda lavoro/attività, perché devo specificare la partizione al momento della produzione, il che limita indirettamente i consumatori su cui può lavorare perché una partizione viene inviata a un solo utente in un gruppo di consumatori. Preferirei non specificare la partizione prima del tempo, in modo tale che qualsiasi consumatore sia disponibile a svolgere quell'attività può farlo. C'è un modo per strutturare partizioni/produttori in un'architettura di Kafka in cui le attività possono essere tirate dal prossimo consumatore disponibile, senza dover suddividere il lavoro in anticipo scegliendo una partizione quando il lavoro viene prodotto?
L'utilizzo di una sola partizione per questo argomento mette tutte le attività nella stessa coda, ma il numero di utenti è limitato a 1 per gruppo di consumatori, pertanto ciascun consumatore dovrebbe trovarsi in un gruppo diverso. Quindi, tutte le attività vengono distribuite a ciascun gruppo di utenti, il che non è il tipo di coda di lavoro che sto cercando.
Apache Kafka è appropriato per l'uso come coda di attività?
Potrebbe anche essere utile menzionare il fatto che l'esecuzione di offset rapidamente diventa complessa per gestire attività non riuscite che devono essere riprovate. – Ztyx
"in Kafka per ottenere pienamente che si deve avere un solo consumatore e una partizione" non è corretto. L'ordine è garantito per ogni partizione in argomento in base alla chiave di partizione. Quindi, se l'ordine è importante, è necessario partizionare il valore su cui l'ordine è importante. Si tratta di garanzie di ordine più efficaci rispetto a rabbitmq, che può avere solo un consumatore per garantire l'ordine. –
ma poi puoi avere un solo consumatore. che non è abbastanza buono –