Bom pessoal, e agora eu quero mostrar um rascunho de código aqui para vocês Para vocês entenderem como que a configuração de uma saga pode acontecer Legal? Então vamos lá, vamos aqui no meu VSCode Para você dar uma olhada de como que as coisas funcionam Aqui para vocês verem, tá? Bom, o lance é o seguinte pessoal Toda vez que você está falando de sagas Você está falando também em passerem, tá? Bom, o lance é o seguinte, pessoal. Toda vez que você tá falando de sagas, você tá falando também em passos, né? Os steps que essa saga vai realizar. Legal? Então, o que acontece aqui, galera? Primeira coisa que você tem que fazer na hora de fazer a configuração de uma saga é configurar os passos, tá? Então, aqui eu tô configurando o passo um tá e se você vai perceber aqui que eu tô dentro de uma estreia de uma saga step ou seja um passo de uma saga o nome desse passo é place order e o tópico ou seja o nome da fila o nome que você queira dar independente eu tô falando de tópico mas poderia ser uma exchange do revMQ, mas isso aqui é o de menos. O ponto é que o nome do tópico vai ser PlaceOrder também. E aqui o StepType vai ser um step, ou seja, normal. Ou seja, uma ação que uma saga vai acontecer. Por quê? Porque caso algo vá compensar, eu posso falar que o step type é compensate. Somente para você saber. Então aqui é o segstep normal. E o status aqui é pend, porque está pendente aqui para a gente. O dado aqui, eu estou inicializando aqui somente com bytes normais. Porque esses bytes no final do dia, eles podem ser um JSON, pode ser, por exemplo, um protocol buffer ou qualquer coisa desse tipo. Então, isso aí para a gente é realmente importante para a gente conseguir entender. Ou seja, o dado não importa o formato. É isso que eu estou querendo deixar claro. E o compensate retries, eu posso pedir para ele ficar fazendo três vezes uma tentativa, mesmo quando eu estou utilizando tópicos, por exemplo. Então, agora que a gente tem o passo número um, a gente pode ir para o passo número dois que ele vai fazer o que ele vai gerar um envolve ou seja vai fazer aqui por exemplo a geração de uma nota fiscal legal depois o passo 3 ele vai remover o produto do estoque e o passo 4 ele vai realizar a entrega, o envio ali para a gente. Legal? Então, olha só como essas coisas são encadeadas. Por exemplo, se eu não conseguir fazer o envio, eu tenho que botar o produto no estoque novamente, cancelar minha nota fiscal e mudar o status dessa ordem como cancelada. Você entende como uma coisa depende da outra e como essas coisas todas acontecem em momentos diferentes, eu posso ter essa saga em aberto até a coisa finalizar. Legal? Então, isso aí para a gente é importante. E aí, em relação a isso, o que vai acontecer? Eu tenho que inicializar uma nova saga, ou seja, eu vou falar que a saga é a saga 1, ou seja, para cada transação eu crio uma saga, eu falo que o nome da saga é entrega, ou eu não preciso nem dar um nome para essa saga. Aí eu falo que o status dela é pending, ela criou agora, alterou agora, e ela vai expirar em 24 horas. Se em 24 horas não resolver, eu mando compensar tudo e acabou. Legal? E eu posso fazer controle de versão da minha saga também. Lembra que eu falei para vocês que a empresa muda a cada momento? Então eu posso criar uma saga onde eu adiciono os steps todos e eu falo qual versão essa saga é, porque eu posso ter várias versões de uma mesma de uma mesma saga legal e agora que eu tenho essa minha saga Ok o que que eu vou fazer eu vou adicionar todos os passos que essa minha saga precisa ter para rodar E aí né para cada momento é para cada transação que acontecer, a gente vai dar um init. Esse init vai injetar os dados iniciais e ele vai trabalhar com a nossa operação. Então imagina que agora aqui eu estou lendo uma fila de mensagens. Aí essa fila, eu vou ter um for infinito lendo essa fila. E daí, para cada transação que eu recebo, eu jogo os dados aqui dentro. A saga inicia baseado nesses passos que a gente determinou. E toda aquela mágica por trás, que eu falei ali para vocês, ela começa a acontecer a compensar e tudo mais então se você olhar tá a estrutura de como que você organiza tudo isso legal a ela é bem interessante e de forma geral parece ser muito simples está o que não é simples, obviamente? Os microserviços, as operações de compensação e principalmente o gerenciamento de estado dessa saga. Quando eu dou um init aqui, o que normalmente vai acontecer? Ele vai gerar um id para a saga barra a transação vai guardar o estado no banco de dados e vai ficar fazendo o processo o processamento e E cada etapa que acontecer, a gente vai ter o log de tudo que acontece. Ou seja, para cada momento, a gente consegue ver passo a passo. Por quê? Se a gente vê uma transação com um problema, eu quero ver o histórico dessa transação. Onde começou os problemas? Onde começou a compensar? Então, eu consigo ver a cada momento né a que aconteceu e o mais interessante de tudo isso é que no final de das contas isso aí é um é um é um evento sorte né cada coisa que vai acontecendo você consegue ver e se algum momento você aquela saga dá algum problema eu posso dar um replay nesses eventos para eu ver o que acontece, por exemplo. Então, é super importante. Inclusive, por questões de audit, de auditoria, você entender e armazenar todos os estados de tudo o que acontece ali na saga para você. Bacana? Então, galera, era isso que eu queria trazer para vocês em relação à saga. No próximo isso que eu queria trazer para vocês em relação a saga. No próximo vídeo, eu quero mostrar para vocês um serviço que tem na maioria dos cloud providers. E eu vou falar para vocês sobre eles, porque tem muita gente utilizando. E eu vou falar alguns prós e contras aí também. Beleza? Vamos lá.