Orquestração de sagas para Spring Boot.Compense falhas automaticamente, sem overhead de infraestrutura.
O Sagaweaw compensa automaticamente o que não consegue completar — rodando no PostgreSQL que você já tem. Sem novo cluster. Sem novos conceitos.
Uma transação começou,
chegou na metade e parou.
Agora você tem estado inconsistente entre serviços. O pagamento foi cobrado, o estoque está bloqueado, mas não há pedido para mostrar.
Alguém escreve um script de recuperação. Outra pessoa é acionada. Um ticket de suporte aparece. E isso acontece de novo na semana seguinte.
Escreva a lógica de negócio. O Sagaweaw cuida do resto.
- ✓ Compensação executa em ordem inversa, automaticamente
- ✓ Retry com backoff exponencial, por passo
- ✓ Trilha de auditoria completa no seu banco de dados
- ✓ Spans OpenTelemetry — zero configuração
- ✓ Uma dependência Spring Boot — só isso
return saga
.step("reserve-inventory")
.invoke(ctx -> inventory.reserve(ctx.itemId()))
.compensate(ctx -> inventory.release(ctx.itemId()))
.step("charge-payment")
.invoke(ctx -> payment.charge(ctx.amount()))
.compensate(ctx -> payment.refund(ctx.chargeId()))
.retryPolicy(exponential(3, Duration.ofSeconds(5)))
.step("create-shipment")
.invoke(ctx -> shipping.schedule(ctx.orderId()))
.compensate(ctx -> shipping.cancel(ctx.orderId()))
.build();Compensação automática
Se qualquer passo falhar, o Sagaweaw executa as compensações em ordem inversa — automaticamente. Nenhum dado fica para trás.
- ✓ Retry exponencial, fixo ou infinito por passo
- ✓ Estado durável — sobrevive a crashes e reinicializações
- ✓ Pivot point — ponto de não retorno configurável
- ✓ Dead letters para intervenção manual cirúrgica
Veja cada saga, em tempo real
O dashboard embutido é sua lupa de debug — feed ao vivo, linha do tempo de passos, fila de retry, dead letters, busca por ID de negócio e detecção de sagas travadas. Tudo na porta que você escolher.

Tudo que você precisa para transações distribuídas
Construído sobre decisões arquiteturais sólidas e padrões testados em produção. Gratuito, para sempre.
Compensação Automática
Quando um passo falha, o Sagaweaw executa as compensações em ordem inversa automaticamente. Seus dados ficam sempre consistentes.
OpenTelemetry — Zero Config
Adicione OTel ao classpath e os spans das sagas aparecem automaticamente no Jaeger, Grafana Tempo, Datadog ou Honeycomb. Sem configuração adicional.
Dashboard de Debug em Tempo Real
Linha do tempo de passos, snapshots de contexto, detecção de sagas travadas, busca por ID de negócio e reprocessamento em lote de dead letters — na porta 8484.
Alertas via Webhook
Uma propriedade para receber notificações de dead letters, sagas travadas e picos de falha. Funciona com Slack, Discord, Teams e PagerDuty.
Retry Inteligente
Retry configurável por passo: exponencial, fixo ou infinito. Cada passo mantém sua própria política de retry e estratégia de backoff.
Orquestração Centralizada
Controle total do fluxo a partir de um único coordenador. Cada saga sabe exatamente onde está e o que vem a seguir.
Retenção Configurável
Archive sagas concluídas após N dias. Mantenha as sagas com falha por mais tempo — seu time vai querer investigar. Trilha de auditoria preservada.
Seu Banco, Suas Regras
Roda em PostgreSQL, MySQL ou H2. Estado persistido de forma durável — sem Redis, sem novo cluster, sem serviço externo.
Pronto para Multi-instância
Escale horizontalmente — N instâncias compartilhando o mesmo banco, sem coordenação extra. Cada saga registra qual instância a criou.
Funciona bem com o que você já usa
Sem novas ferramentas para aprender. Métricas no Prometheus, traces no seu backend OTel, logs com MDC — o banco que você já tem. Zero nova infraestrutura.
Adicione spring-boot-starter-opentelemetry e os spans das sagas aparecem automaticamente no seu backend OTel. Ver documentação →
Rodando em 5 minutos
Uma dependência. Sem novo cluster. Sem boilerplate.
Adicione a dependência
sagaweaw-spring-boot-starterEscreva sua saga
@Saga + SagaDefinition<T>Inicie
sagaManager.start(context)Pronto para parar de escrever scripts de recuperação?
Gratuito para sempre. Sem lock-in. Sem servidor externo. Só adicione a dependência.