01. DADOS GERAIS
| Produto: | |
|---|
| Linha de Produto: | |
|---|
| Segmento: | |
|---|
| Módulo: | Workflow |
|---|
| Função: |
|
|---|
| País: | Brasil |
|---|
| Ticket: |
|
|---|
| Requisito/Story/Issue (informe o requisito relacionado) : | DVARINT1-14506 |
|---|
02. SITUAÇÃO/REQUISITO
Revisar e corrigir o comportamento das DLTs dentro do fluxo do CH, garantindo que os registros enviados para a DLT sejam devidamente reprocessados, evitando gargalos e permitindo que o job volte a funcionar com estabilidade.
03. SOLUÇÃO
- Reativação dos Jobs que processam as mensagens de dead-letter;
- Melhoria no job ReprocessamentoDeadLetterAsync para alterar o status de 2(Enviada p/ reprocessamento) para 1 (Salva) após 10min, evitando assim que mensagens não processadas fiquem perdidas;
- Essas mensagens serão reprocessadas até que obtenham sucesso ou atinjam o limite de reprocessamentos automático.
- Inclusão da ordenação descendente (mais recentes p/ mais antigas) por Id no método que retorna a lista de mensagens para o frontend, melhorando assim a visualização das mensangens.
A lógica existente de dead-letter não foi alterado, uma vez que ao realizar os testes de inclusão de mensagem na DL e reprocessamento da mesma, ocorreram com sucesso. Chegou-se a conclusão que o problema levantando na tarefa, ocorreu devido
a baixa performance dos Workers no processamento das mensagens, não tendo a funcionalidade de dead-letter nenhum impacto nos fluxo dos Workers.
As melhorias nos Workers foram realizados na tarefa:
e estas melhorias foram excenciais para o bom funcionamento dos serviços.
Como teste de carga da dead-letter, foi realizado o seguinte teste:
- Enviou-se 50 mensagens que gerariam erro;
- Essas mensagens foram inseridas na DL corretamente;
- Após os jobs de DL rodarem, as mensagens foram corretamente exibidas na tela com status 1;
- O job de reprocessamento rodou e as mensagens foram novamente reinseridas na DL e os dados das mesmas atualizados no banco;
- Houve então uma atualização da informação que gerava o erro de processamento e via tela, solicitou-se o reprocessamento das mensagens;
- As mensagens então foram reprocessadas com sucesso e seu status foi atualizado no banco, encerrando assim o ciclo de tratamento das mensagens.
Nota: Recomenda-se acionar a equipe de Banco de dados para criar uma rotina de expurgo dos dados da tabela MensagemDeadLetter, evitando assim o acumulo desnecessário de mensagens muito antigas.