jobforge
Orquestração de jobs agendados com outbox transacional, leases em Redis e status por gRPC.
.NET 10PostgreSQLRedisKafkagRPCBlazor
O problema
Agendar e executar jobs sem perder pedido quando a API cai no meio do caminho, mantendo status confiável para o console.
Arquitetura
Telas


O que fica
- Outbox transacional: o job só existe depois que a linha do banco e o evento Kafka estão no mesmo commit.
- Lease em Redis evita dois schedulers rodando o mesmo job.
- Status via server-streaming gRPC — console atualiza sem polling.
A API recebe o pedido e grava job + evento de outbox na mesma transação. O scheduler pega o lease no Redis e publica no Kafka; o runner consome, executa com retry e reporta por gRPC. O console Blazor escuta o stream de status.