Pular para o conteúdo principal
Open Source · Apache 2.0

Orquestração de Sagas para Java

Gerencie transações distribuídas com compensação automática, retry inteligente e observabilidade em tempo real. Construído para sistemas críticos.

PixPaymentSaga.java
@Saga("pix-payment")
public class PixPaymentSaga implements SagaDefinition<PixContext> {

    @Override
    public SagaFlow<PixContext> define(SagaBuilder<PixContext> saga) {
        return saga
            .step("validate-dict")
                .invoke(this::validateDict)
                .compensate(this::invalidateDict)
            .step("block-balance")
                .invoke(this::blockBalance)
                .compensate(this::unblockBalance)
            .step("transmit-to-bacen")   // PIVOT — sem compensação
                .invoke(this::transmitToBacen)
                .retry(exponential(3, Duration.ofSeconds(1)))
            .build();
    }
}

Veja cada saga, em tempo real

O dashboard embutido é a sua lente de debug — feed ao vivo, timeline de steps, retry queue, dead letters e métricas por tipo de saga. Tudo na porta que você escolher.

localhost:8484/sagaweaw
Sagaweaw Dashboard — Feed
Como funciona

Compensação automática

Se qualquer step falhar, o Sagaweaw executa as compensações em ordem inversa — automaticamente. Nenhum dado fica para trás.

  • Retry exponencial, fixo ou infinito por step
  • Estado durável — sobrevive a crashes e restarts
  • Pivot point — ponto de não retorno configurável
  • Dead letters para intervenção manual cirúrgica
Ver ciclo de vida →
reserve-inventory
charge-payment
create-shipment
 

Uma lente de debug, não só monitoramento

Use o Grafana para observabilidade de produção em escala. Use o Sagaweaw Dashboard para inspecionar o que está acontecendo agora.

Feed ao vivo
Feed ao vivo

Acompanhe cada saga em execução, filtre por status ou nome e veja o retry queue em tempo real.

Timeline step a step
Timeline step a step

Inspecione tentativas, erros, compensações e timestamps de cada step individualmente.

Fila de ação
Fila de ação

Dead letters com stack trace, snapshot de contexto e botão de reprocessamento direto na UI.

De mão dadas com o que você já usa

Nenhuma nova ferramenta para aprender. Métricas no Prometheus, logs com MDC enriquecido, banco de dados que você já tem. Zero nova infraestrutura.

Spring Boot
Auto-configurado
PostgreSQL
MySQL · H2
Prometheus
Scraping automático
Grafana
Dashboards prontos
Micrometer
Instrumentação nativa
MDC / Logback
Logs enriquecidos

Adicione spring-boot-starter-actuator + micrometer-registry-prometheus e as métricas aparecem em /actuator/prometheus automaticamente. Ver documentação →

Tipos de Steps com Inferência Automática

O Sagaweaw infere automaticamente o tipo de cada step baseado na sua definição.

COMPENSABLE

Pode ser desfeito em caso de falha posterior.

.step("block-balance")
  .invoke(this::block)
  .compensate(this::unblock)
PIVOT

Ponto de não retorno. Sem compensação definida.

.step("transmit-to-bacen")
  .invoke(this::transmit)
  // sem .compensate() = PIVOT
RETRIABLE

Retry infinito e sem compensação. Deve sempre ter sucesso.

.step("send-notification")
  .invoke(this::notify)
  .retry(infinite())

Ciclo de Vida da Saga

Cada saga passa por estados bem definidos, garantindo rastreabilidade completa.

STARTED
Iniciada
EXECUTING
Executando
COMPLETED
Sucesso
COMPENSATING
Desfazendo
COMPENSATED
Rollback OK
FAILED
Falha fatal

Comece em 3 passos

Integração simples com Spring Boot. Sem configuração complexa.

1

Adicione a dependência

sagaweaw-spring-boot-starter
2

Crie sua Saga

@Saga + SagaDefinition<T>
3

Dispare!

sagaManager.start(context)
Open Source · Apache 2.0

Pronto para orquestrar suas sagas?

Comece gratuitamente. Sem lock-in. Sem servidor externo.