Olá ess é o integration developer bootcamp e estamos na parte prática da aula de reprocessamento vimos anteriormente o seguinte um pipeline de reprocessamento ele é capaz de reprocessar pipelines que obtiveram um erro no ambiente para fazer isso a gente precisa seguir alguns tópicos eu tenho aqui algumas colhas pra gente ver o que que precisa ser feito Primeiro passo é definir a Cadência de execução do pipeline de reprocessamento e a Cadência de execução ela é definida pelo Trigger do pipeline nesse caso ele tem um Trigger de por exemplo 5 em 5 minutos esse trigger é variável
de acordo com a situação apresentada se o meu meu ambiente possui muitos erros a serem reprocessados Talvez o meu tempo tem que ser menor 5 minutos 3 minutos ou talvez a cada minuto agora se o meu processamento não gera muitos erros por dia ou no ambiente eu posso aumentar esse tempo de execução desse scheduler para por exemplo 30 minutos 1 hora 6 a cada 6 horas horas e assim por diante Então essa questão do Trigger do pipeline de reprocessamento ele é variável de acordo com a situação do ambiente então definimos aqui o Trigger para 5
minutos então a cada 5 minutos ele vai iniciar o pipeline de reprocessamento e vai verificar se na minha base de erros tem algum erro para ser reprocessado o segundo passo depois de ter feito o primeiro vou marcar isso como concluído o segundo passo é controlar a quantidade de vezes que um reprocessamento irá acontecer aqui temos o seguinte Como dito anteriormente na aula teórica Se temos um registro de d30 e ele é enviado para reprocessamento o reprocessamento vai enviar para processamento novamente ele vai ficar nesse Loop Infinito caso não definimos um limite de reprocessamento então aqui
temos o seguinte a gente precisa associar ao registro um número de retent ativas aceitas para fazer isso a gente vai fazer o seguinte a gente vai associar ao pipeline uma variável chamada rry Number esse rry Number ele é associado a um registro específico então toda vez que vai entrar um registro aqui para reprocessamento ele já vai entrar com essa chave que indica quantas vezes ele foi reprocessado ou não toda vez que ele entrar nesse forit de reprocessamento essa chave vai ser incrementada em um então aqui a gente vai somar então a gente faz uma soma
dessa chave retry um logo depois esse registro vai ser verificado e aqui dentro desse Block execution a gente vai se esse retry Number ou seja o número de tentativas já atingiu o limite ou não nesse caso o limite é TR caso ele tenha atingido limite eu vou publicar um erro e eu vou excluir esse registro da minha base de dados então eu faço a deleção desse registro agora caso ele não tenha sido não tenha atingido o limite eu vou simplesmente enviar novamente para reprocessamento por meio do evento ou do por meio do evento ou do
pipeline Executor fazendo essa verificação de R tentativas e excluindo os registros Tod todas as vezes que ele é enviado para reprocessamento nós garantimos o segundo tópico Então temos aqui que o reprocessamento ele precisa ter uma quantidade de vezes que deve acontecer ou seja a gente tá limitando o reprocessamento para que ele não se repita infinitamente por fim independente do tipo de trigger é possível realizar o reprocessamento na arquitetura que que estamos acostumados a gente tem um pipeline de processamento que é esse pipeline aqui e ele é do tipo evento o Trigger dele é do tipo
evento entretanto por conta disso a gente pode fazer o reprocessamento desse pipeline utilizando O Event publisher aqui nessa posição publicando o evento novamente a questão é nós deveremos ser capazes de republicar qualquer Trigger qualquer pipeline com qualquer Trigger E para isso a gente pode enviar por exemplo um p pipeline que tem uma API como Trigger para reprocessar para garantir que isso aconteça a gente precisa utilizar O pipeline Executor aqui cabe cabe ao desenvolvedor decidir se vai ser de maneira assíncrona ou de maneira síncrona nós vamos enviar para esse pipeline Executor as informações de entrada que
chegaram do nesse pipeline que precisa ser reprocessado juntamente com a quantidade de tentativa ou de retry Number como tá escrito aqui para poder fazer essa verificação de limite de de tentativas com isso a gente garante o terceiro tópico que é reprocessar todos os tipos de pipeline agora a gente vai ver na prática todos esses processos funcionando temos o seguinte esse é o nosso pipeline de reprocessamento e esse é um pipeline de processamento qualquer nesse pipeline de processamento eu deveria passar algumas informações no Trigger para que ele funcione normalmente isso significa que se eu executar esse
pipeline sem ter feito nenhuma inserção de registro no meu test mode ele vai provocar em erro provocando erro ele vai vir pro on Exception nesse Block execution chamado processamento e dentro desse on Exception nós vamos fazer a inserção desse erro do pelad de entrada para o pipeline de reprocessamento e a gente vai ver as coisas acontecendo Então antes de provocar um erro nesse pipeline Eu vou acessar o pipeline de reprocessamento eu vou demonstrar que essa base aqui ela está vazia então estamos no pipeline de reprocessamento eu vou executar essa base para ver se a gente
encontra algum erro como veio nenhum registro significa que a base está vazia agora eu vou executar esse pipeline por eu não passar nenhuma informação aqui no meu teste mode esse pipeline Vai resultar em erro e vai inserir nesse banco de dados de reprocessamento Após a execução do pipeline assim como informado ocasionou em erro e esse erro foi salvo no meu pipeline de reprocessamento então se eu voltar para esse pipeline e fazer a leitura novamente a gente vai perceber que nessa base de dados agora possuímos registros para serem reprocessados que é esse registro que acabamos de
inserir o que vai acontecer é o seguinte ele vai procurar se tem registros ou não vai cair no no choice em que retornamos dados e aqui para cada dado que que for retornado então podemos ter diversos tipos de dados diversos erros diferentes vamos fazer fazer alguma operação essa operação é a gente vai fazer o aumento dessa desse número de tentativa para em um então aqui por exemplo temos retry Number como nulo esse retry Number iria para um logo depois a gente iria para o verificação da do número de tentativas nesse caso específico ele iria enviar
para processamento novamente e enviar pro mesmo pipeline que vios anteriormente que acabamos de processar após enviar para processamento ele vai apagar esse registro vamos voltar pro Block execution ele vai apagar esse registro vai colocar o loop como sucesso e vai finalizar o processamento com isso eu garanto que na próxima execução a a base de dados esteja vazia novamente e esse dado só vai retornar para cá caso ele retorne erro novamente então vamos fazer o teste novamente se eu cortar esse conector aqui vamos perceber que temos um registro na base de dados que é esse registro
que está aparecendo eu vou executar o pipeline e ele vai enviar esse registro para ser reprocessado novamente pronto então os registros foram enviados para reprocessamento e o que acontece é o seguinte uma vez que eu já repressi esse registro ele sai dessa base de dados então caso eu faça a leitura novamente simplesmente Execute novamente nós vamos cair nesse dião de saída que é não retornou registros não há registros para serem reprocessados caso ele viesse pro processamento que esses dados que eu enviei e não funcionasse novamente ele iria cair no Exception nós iríamos pro vou executar
de novo nós voltaríamos pro reprocessamento mas a diferença é que nesse caso específico ele já viria com o rry Number como um E aí ele incrementaria esse rify Number para dois por exemplo até chegar em três e ele parar de fazer esse reprocessamento então é assim que funciona o pipeline de reprocessamento genérico para tratar todos os erros do ambiente independente do TIP Trigger Essa foi a aula de reprocessamento nos vemos nos próximos vídeos