1
resposta

producer.send x producer.send().get()

Eu posso dizer então que o comando producer.send é assincrono, ou seja pode ser que a mensagem não chegue no Kafka porém eu não vou saber é isso ?

Já com o producer.send(record).get() seria similiar a um insert no JPA que eu recebo o id da entidade ? É uma comparação válida?//

O producer.send(record).get() impacta então a performance certo ? Existe uma recomendação de quando usar um ou outro ?

1 resposta

Oi Rogério

O método .send() envia assincronamente um registro para um tópico e chama o callback fornecido quando o envio for confirmado. O envio é assíncrono e esse método retornará imediatamente assim que o registro for enviado. Isso permite o envio de vários registros em paralelo sem bloqueio para aguardar a resposta após cada um. Como a chamada de envio é assíncrona, ela retorna um Future. A chamada de get() neste Future bloqueará até que a solicitação associada seja concluída ou lance qualquer exceção que ocorreu ao enviar o registro. É mais performático usar assíncrono, pois não bloquea a thread. Mas depende do caso de uso.