1
resposta

[Dúvida] Spring cloud comunicação entre microservicos

Tenho 3 entidades por exemplo, Usuario, documento e ficha, em que cada um fica em um microservico diferente, gostaria de saber se existe de alguma maneira, ao criar uma ficha , ele se comunicar entre os servicos de usuario e documentos, caso haja algum erro ele não salve a entidade de ficha, e caso ao salvar fichar tenha algum erro ele delete o usuario e documento que foi criado.

1 resposta

Olá, Saniel. Tudo bem?

O que você está buscando é uma forma de garantir a consistência entre os serviços de Usuário, Documento e Ficha ao realizar operações que dependem uns dos outros.

Uma abordagem comum para resolver esse tipo de problema é o uso do padrão de design chamado "SAGA". O padrão SAGA permite que você gerencie transações distribuídas de forma a garantir que todas as operações sejam concluídas com sucesso ou que todas sejam revertidas em caso de falha.

Existem duas principais abordagens para implementar SAGA:

  1. Orquestração: Um serviço central (orquestrador) gerencia a sequência de passos da transação, garantindo que cada serviço seja chamado na ordem correta e lidando com falhas e compensações.

  2. Coreografia: Cada serviço é responsável por publicar eventos e reagir a eventos de outros serviços. Não há um orquestrador central; em vez disso, os serviços colaboram entre si para completar a transação.

No seu caso, se você optar pela orquestração, poderia ter um orquestrador que, ao criar uma Ficha, chama o serviço de Usuário e Documento, e se algo falhar, ele executa as ações de compensação necessárias (como deletar o Usuário e Documento criados).

Com a coreografia, cada serviço publicaria eventos no caso de sucesso ou falha, e os outros serviços reagiriam a esses eventos para realizar ações de compensação.

Além disso, o Spring Cloud oferece ferramentas que podem ajudar na implementação desses padrões, como o Spring Cloud Stream para comunicação baseada em eventos e o Spring Cloud Sleuth para rastreamento distribuído.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!