You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Trabalho no Tribunal de Justiça do Estado de Minas Gerais e utilizamos esta aplicação para nos comunicarmos com o eSocial.
Devido a uma indisponibilidade temporária do eSocial-Gov, mais de 25 mil ocorrências de remuneração e pagamento acabaram ficando reprezadas no trasnsmissor. Quando o eSocial-Gov foi restabelecido, o serviço de montagem de lotes ficou extremamente lento, demorando em média 20 minutos para montar os lotes de 50 ocorrências.
Ao analisar a situação, chegamos a conclusão que o problema estava acontecendo no ponto abaixo (TarefaEnvioEventos.java a partir da linha 63):
Neste ponto, ao aplicar o "comando `filter(evento -> regrasFactory.getRegra(evento).habilitado(evento))" as regras de habilitação são executadas para todos os itens da lista "eventosEmFila", mesmo o lote possuindo uma quantidade máxima estabelecida.
Para contornar o problema alteramos o trecho da seguinte forma: List<EventoDTO> eventosHabilitados = new java.util.ArrayList<EventoDTO>(); Long contador = 0l; for(EventoDTO evento : eventosEmFila) { if(regrasFactory.getRegra(evento).habilitado(evento)) { eventosHabilitados.add(evento); contador++; } if (contador.equals(LIMITE_EVENTOS_LOTE)) break; }
A intenção foi simplesmente evitar a execução desnecessária da validação de habilitação se a lista de habilitados já tiver alcançado o número máximo estipulado. Após esta alteração, a montagem do lote passou a ser realizada em menos de 5 segundos.
Certamente existem controles mais completos que poderiam ser implantados, como o carregamento da lista "eventosEmFila" por tipo de evento (tabela, não-periódicos e depois periódicos) que também traria melhorias na performance de montagem de lote, mas esta simples alteração já foi suficiente para desafogarmos a montagem de lotes.
Sendo assim, fica a proposta de melhoria.
Obrigado pelo excelente trabalho.
The text was updated successfully, but these errors were encountered:
Prezados, bom dia.
Trabalho no Tribunal de Justiça do Estado de Minas Gerais e utilizamos esta aplicação para nos comunicarmos com o eSocial.
Devido a uma indisponibilidade temporária do eSocial-Gov, mais de 25 mil ocorrências de remuneração e pagamento acabaram ficando reprezadas no trasnsmissor. Quando o eSocial-Gov foi restabelecido, o serviço de montagem de lotes ficou extremamente lento, demorando em média 20 minutos para montar os lotes de 50 ocorrências.
Ao analisar a situação, chegamos a conclusão que o problema estava acontecendo no ponto abaixo (TarefaEnvioEventos.java a partir da linha 63):
List<EventoDTO> eventosHabilitados = eventosEmFila.stream()
.filter(evento -> regrasFactory.getRegra(evento).habilitado(evento))
.limit(LIMITE_EVENTOS_LOTE)
.collect(Collectors.toList());
Neste ponto, ao aplicar o "comando `filter(evento -> regrasFactory.getRegra(evento).habilitado(evento))" as regras de habilitação são executadas para todos os itens da lista "eventosEmFila", mesmo o lote possuindo uma quantidade máxima estabelecida.
Para contornar o problema alteramos o trecho da seguinte forma:
List<EventoDTO> eventosHabilitados = new java.util.ArrayList<EventoDTO>();
Long contador = 0l;
for(EventoDTO evento : eventosEmFila) {
if(regrasFactory.getRegra(evento).habilitado(evento)) {
eventosHabilitados.add(evento);
contador++;
}
if (contador.equals(LIMITE_EVENTOS_LOTE))
break;
}
A intenção foi simplesmente evitar a execução desnecessária da validação de habilitação se a lista de habilitados já tiver alcançado o número máximo estipulado. Após esta alteração, a montagem do lote passou a ser realizada em menos de 5 segundos.
Certamente existem controles mais completos que poderiam ser implantados, como o carregamento da lista "eventosEmFila" por tipo de evento (tabela, não-periódicos e depois periódicos) que também traria melhorias na performance de montagem de lote, mas esta simples alteração já foi suficiente para desafogarmos a montagem de lotes.
Sendo assim, fica a proposta de melhoria.
Obrigado pelo excelente trabalho.
The text was updated successfully, but these errors were encountered: