Melhor pratica para Upload e leitura de um arquivo

Prezados vim pedir uma orientação aos senhores

Preciso fazer o Upload de um arquivo, abrir e processar os seus dados ( cadastrando os produtos )

-Upload ok, logo apos o Upload aproveito o objeto do tipo MultipartFile[] files e envio para o Serviço assim não preciso abrir o arquivo

-Processar os dados - aqui esta fazendo também mais o motivo de vir aqui e perguntar é que são aproximadamente 14.000 registros ou seja a tela de Upload fica lá parada e isto demora uns 18 minutos… , se bem que o usuário pode a qualquer momento clicar no menu e partir para outra view

Entendo que o Upload é uma coisa e abrir o arquivo percorrer e fazer as atualizações é outra eu estou fazendo tudo na mesma view aproveito o arquivo e já passo ao processamento mais vejo que isto num ta ok

Sobre a demora realmente 18 minutos é muito tempo, estava usando Scanner para percorrer as linhas do arquivo e mudei para o código abaixo mais em termos de perfornance e banco de dados não mudou muito

Stream<String> lines = Files.lines(printUsageFile);
lines.forEach(line -> { .... }

Segue o trecho de código que uso para obter o arquivo e enviar para processamento

@RestController
@RequestMapping("/uploadFile")
class FileController {

    @Autowired
    private FileStorageService service;

   @Autowired
   private ImportarService importarService;

   @PostMapping
   public UploadFile upload(@RequestParam("files[]") MultipartFile[] files) {

         service.storeFile(files[0]); 
         importarService.processar(files[0]);