Executando verificação de segurança...
1

[Dúvida] Kafka - processamentos em paralelos

Eu tenho o seguinte cenário:
Supondo que um arquivo pode ter de 100 à 40k linhas, vamos usar 2 clientes de exemplo

O cliente A quer importar um arquivo que tem 20000 registros
O cliente B quer importar um arquivo que tem 400 registros

(Mas terei centenas de clientes e eles podem enviar vários arquivos de uma vez)

Quando o cliente A faz o upload do arquivo e clica em importar, então as linhas do arquivo são lidas e publicadas na fila processar-registros (uma à uma).

A fila processar-registros, está configurada com 10 partições.

A aplicação começará a processar as linhas (consumer)...

Nesse meio tempo, o cliente B faz o mesmo processo para o arquivo dele com 400 registros.

O problema

As mensagens do cliente B são publicadas após as do cliente A (seguindo a ideia de fila do kafka), então as mensagens do cliente B aguardarão até as mensagens do cliente A serem consumidas e processadas e só então as mensagens do cliente B SERÃO processadas

Qual abordagem podemos seguir para que os 2 (ou mais) clientes tenham seus arquivos (registros) processados em pararelo?

Vale lembrar que não terei só 2 cliente e sim vários

Carregando publicação patrocinada...
2

Minha sugestão é experimentar usar Keys diferentes nas partições, pois um produtor que envia mensagem do cliente A e usa uma key para o cliente A, essas mensagens irão sempre para uma partição X. Já as mensagens do cliente B usando uma key B vão sempre para partição Y. Na hora de consumir usando consumidores paralelos meio que ficaria uma partição para cada X clientes.

Óbvio que depende do número de clientes e o tempo pra ler essas mensagens mas acho que vale o teste.

Algumas leituras que falam sobre partition key:
https://www.openlogic.com/blog/kafka-partitions
https://medium.com/event-driven-utopia/understanding-kafka-topic-partitions-ae40f80552e8