**"Problemas de Performance com Threads no Spring? Ajuda com Lógica Assíncrona!"** 🚀
Olá, pessoal!
Estou enfrentando um problema de performance ao implementar lógica assíncrona no consumo de APIs. A ideia é processar um dado enquanto busco informações adicionais em uma API, para depois fazer o merge no final. No entanto, ao usar threads para isso, percebi que o desempenho não está melhorando como esperado.
Nos dashboards, notei que o uso de sockets (ainda não entendo muito bem sobre isso) se eleva consideravelmente, e em vez de otimizar o processamento, acabo criando um gargalo. Estou utilizando Java 17 com Spring e já tentei tanto um executor customizado quanto o padrão do Spring, mas nenhum solucionou o problema.
Pelo que analisei, o real problema parece estar no esgotamento de recursos. Alguém teria alguma dica de estudo ou direcionamento para resolver esse tipo de situação?
Agradeço desde já! 🚀
A ideia é processar um dado enquanto busco informações adicionais em uma API, para depois fazer o merge no final.
Quanto tempo demora pra processar esse dado?
Se não for um processamento extremamente complexo com milhões e milhões de cálculos esse tempo é praticamente instantâneo.
Quanto tempo demora para consultar a API?
Se for uma unica chamada à uma API externa podemos considerar cerca de 40ms. Isso é uma eternidade na computação.
Qual o real problema?
Sem informações suficientes para entender o problema por completo só posso fazer a constatação que você está abrindo uma thread para fazer algo que demora muito mais que o resto do processamento. Se você aguardar essa requisição completar ela sempre será um gargalo.
Se forem várias chamadas faz sentido fazer uma pool e disparar todas ao mesmo tempo
Mas uma única chamada? de acordo com as informações que me falou pode fazer sincronamente que não vai fazer diferença
A única coisa que vejo que faria diferença seria não esperar essa chamada terminar no processamento principal (responder de forma assúicrona), mas depende de como seu software está construído
Eu não tenho certeza que entendi exatamente o problema mas acho que você tem que pesquisar por cron job.
Geralmente cron job é melhor para servers que schedule task.