Olá esse é integration developer bootcamp estamos na etapa de arquitetura e padrões de projeto 1 e esse é o Rone aplicaremos todos os conceitos abordados nessa etapa diretamente no pipeline criado no último Rone que foi o Ron de boas práticas de desenvolvimento aqui tínhamos um pipeline de migração di área e tinha um processamento diretamente no Far que vamos fazer é desacoplar todos os sistemas e após desacoplar todos os sistemas nós vamos acrescentar dois pipelines genéricos para o ambiente que são pipeline de reprocessamento pipeline de envio de erro nesse vídeo Nós faremos o desacoplamento do pipeline
de processamento e o pipeline de consulta e logo depois continuaremos fazendo os outros pipelines aqui o primeiro passo é justamente desacoplar essa estrutura aqui temos a consulta fonte de dados e também no mesmo pipeline estamos tendo o processamento de cada registro diretamente no for então para lidar com isso a gente vai criar novo pipeline vai colocar todo esse processamento no novo pipeline com novo pipeline aberto nós podemos acessar peline principal copiar o conteúdo dentro process do forit cont control c e para o novo pipeline colá aqui agora a gente vai fazer um refinamento do que
deve continuar e do que deve mudar Afinal estamos dentro de um outro pipeline e aqui estamos considerando por exemplo suadores de sucesso que não se aplicam quando a gente faz o desacoplamento então o primeiro passo é colar todo esse conteúdo em novo pipeline é configurar o Trigger para evento esse evento vai se chamar nós vamos escutar por exemplo ind Zon processamento esse será o nome doento que a gente vai estar escutando logo logo eu preciso colocar esse evento lá dentro do outro pipeline então a informação que chega aqui chega diretamente eh por exemplo na raiz
e aqui a gente tá agrupando essa informação dentro de Person que é um atributo depois estamos salvando depois Estamos fazendo Nosa transformação e assim por diante ao final temos set loop success aqui mas o ponto aqui é que nós não temos mais um loop Então temos que mudar o sumarizados sucesso para uma mensagem qualquer genérica de sucesso mesmo mas antes disso temos mais um detalhe que é todo esse bloco estava dentro do on Exception do on process de um farit qualquer erro que acontece aqui irá encaminhar pro inception do farit e esse tratamento que tínhamos
anteriormente se perde ao simplesmente colar todo esse conteúdo aqui então o que podemos fazer é colocar esse conteúdo dentro de um Block execution e fazer o tratamento diretamente num um Exception desse Block execution assim como estamos fazendo anteriormente pelo farit antes de continuar as atrações eu vou salvar pipeline e vou salvar com processamento R Zone então aqui vai ser evt processamento Ron e eu vou colocar aqui meu projeto defo novamente preciso reconfigurar o Trigger na verdade está configurado vamos ver temos aqui o pipeline com evento de Trigger o trig se chama processamento Vou salvar esse
pipeline e aqui a gente inicia o primeiro pipeline que é VT processamento Rone antes de continuar as alterações aqui eu preciso fazer uma coisa no primeiro pipeline que deveríamos desacoplar esse esse mesmo processo está dentro do farit o que eu vou fazer é simplesmente ir para primeiro pipeline vou entrar dentro do farit e eu vou retirar todo esse processamento e substituir por outros valores então todo esse processamento que foi para o outro pipeline eu vou excluir e aqui eu vou colocar dois componentes primeiro componente é O Event publish e o segundo componente vai ser um
generator que a genteo sumador de sucesso dentro doentão aquiar esses dois conectores comear aig do primeiro o nome do evento que estamos publicando se chama processamento Zoom dessa forma estamos enviando a mensagem inteira exatamente como está aqui já que a gente não fez nenhuma alteração lá naquele processamento toda mensagem que chega aqui que é um dado inteiro vai ser enviado diretamente para aquele pipeline e ele vai agrupar tudo vai salvar e etc então o stepn vai ser publica evento deamento Vou confirmar e aqui no J generator eu vou criar o sumarizados incrementa o nariz usador
de sucesso aí aqui vamos ter o success com valor true dessa forma e aqui para cada execução desse flite ele vai incrementar o sarador de sucesso então novamente o que aconteceu foi que temos esse pipeline que acabamos de criar ele possui um um Trigger de evento que escuta processamento Rone temos agora dentro do forit esse event publisher publicando eventos de processamento para que aquele pipeline consuma esses eventos para cada registro E aí a gente desacopla a consulta com o processamento então aqui temos a consulta e aqui dentro para cada registro retornado nós temos o publicação
de evento Vou salvar esse pipeline vou chamar ele de scheduler consulta indom também no grupo de salvar e aqui estamos quase finalizando a primeira etapa do desacoplamento aqui dentro que eu falei temos o o Exception do farit que tem um detalhe muito importante todo o erro de execução aqui todo esse controle de execução ele é utilizado para gerar o resume de execução desse pipeline mas também precisamos no pipeline de processamento esse aqui criar uma forma de salvar os erros uma vez que caso esses erros sejam Salvados eu preciso reprocessar automaticamente E para isso a gente
coloca esses valores dentro de uma de uma base de dados temporária que será acessado pelo pipeline de reprocessamento então aqui eu vou fazer o seguinte para fazer toda essa dinâmica de enviar para reprocessamento nos casos de erro eu vou colocar todo esse processamento dentro de um bloco exec e meu One inception será ativado nos casos de erro sendo ativado vai ter essa inserção na base de dados temporário o primeiro passo aqui vai ser buscar o Bloc execution e todo esse valor aqui tirando esse setl success que eu posso tirar eu vou fazer um uma saída
melhor todos esses valores vão para dentro dou um process meu Block execution acabei não copiando vou lá copiar de novo shift ou control e arrasto para selecionar todos cont control c e agora cont control V dentro do meu on process agora aqui fora eu posso pegar todos esses valores com control delete e excluir e ligar o meu Trigger ao meu bloco execution que eu vou chamar de processamento outro detalhe é que eu posso pegar aqui um blo des generer por exemplo e simplesmente colocar uma mensagem de sucesso Caso chegue ao final do Block execution por
exemplo visão de saída aqui eu vou colocar um status success e uma mensagem dizendo que o meu fluxo mensagem vou colocar aqui o registro foi migrado com sucesso após terminar essa configuração Eu tenho um dião de saída relativamente genérico informo agora que meu a minha execução Foi um sucesso que eu preciso fazer agora é que em todo tipo de erro eu preciso enviar para metion e no metion eu vou inserir no banco de dados temporários para reprocessamento vamos iniciar a configura fazer isso eu uma dentro desse Exception e vou explicar conector por conector a sua
função Então essa é a estrutura e vamos lá começar a entender Quais são os conectores que foram utilizados primeiro ponto aqui é um log como sempre nós vamos utilizar um log no como primeiro conector do One Exception de subfluxo porque tendo esse log aqui nós conseguimos enxergar a mensagem Independente de que erro tenha acontecido diretamente por meio do log facilitando na manutenção logo depois vamos criar um objeto de erro e esse objeto de erro vai ser padrão então dentro de erro temos status message payload date todos eles já procuram por algum tipo de atributo semelhante
diretamente na mensagem caso contrário ele vai colocar alum valor padrão então por exemplo em message temos que defo vai buscar pro message P message caso não exista o valor será um no error de erro desconhecido logo abaixo também temos um exemplo em payload ele vai procurar por message P payload caso contrário caso ele não ache diretamente no no erro que chegou no Exception ele vai criar um um pad de que é o pad que chegou de fato num Exception pegando message ponto cifrão e vai criar uma data que foi a data do erro logo após
a criação desse objeto nós vamos salvar esse objeto erro e aqui vamos buscar essa informação de pessoa e vamos colocar dentro do do objeto payload então aqui temos o seguinte uma das coisas que pode estar chegando aqui no no meu inception é diretamente o atributo pessoa eh que foi salvo anteriormente no process chegando esse ADP pessoa eu quero que ele não se repita E aí ele já estaria dentro de message por exemplo message pon cifrão o que eu vou fazer aqui é utilizar um jol para pegar esse error p pelot ppon e colocar ele dentro
de do objeto de erro também por fim eu pego o pipeline input que eu ainda não svei esse pipeline input é exatamente a forma que a mensagem chegou no meu pipeline Porque caso eu queira enviar para processamento novamente preciso que a mesma mensagem esteja chegando então a gente já já vai criar um atributo chamado pipeline input vai colocar todas as informações lá dentro salvar e depois para poder fazer essa consulta aqui diretamente no session então aqui a gente tem a preparação do payload logo depois que é a preparação do payload para inserir no CA em
si e ele tem o C possui essas tabelas a gente prepara e esses registros na verdade para inserção no Cassandra então com valores padrão por exemplo usando os metadados utilizando erro repad que acabou de ser criado e assim sucessivamente após preparar esse pad nós podemos fazer a inserção na tabela em si tabela que estamos inserindo é uma tabela de reprocessamento e os valores que estamos inserindo já foram preparados no payload anterior o método de operação ins e a STR de conexão é string de conexão do da base de dados como sempre depois da de uma
consulta um um meio externo com uma base de dados temos uma Search para verificar se a consulta foi bem sucedida ou não aí nós pegamos o erro de volta que foi o erro que salvamos nesse Create erro Object e criamos um output de erro juntamente com esse erro aqui coloco aqui ess erro para que essa seja a saída do pipeline como não temos um troll aqui dentro caso ele passe por esse conector ele vai meu procento direto para aquele de sucesso então aqui eu devo colocar mais uma coisa que é um TR erro para parar
esse fluxo Assim que ele chegar no meu on Exception não estamos mais no então não precisamos nos preocupar com exception Porque agora não temos fluxo não temos um L para que ele mantenha esse mesmo erro Que Nós criamos norment eu vou criar um erro customizado control enable eror e a única coisa que eu vou fazer passar a minha mensagem eu já a mensage de erro conect