Resume where
the work left off.
A workflow can wait days for an approval, a signal, or a timer, and it picks up where it stopped after a restart. Its state lives in PostgreSQL, so there is no orchestration cluster to run.
Build APIs, durable workflows, and background jobs on Vert.x. Contracts are typed, wiring is checked when you compile, and messages leave in the same transaction as your data.
@ServiceContract(namespace = "shop", value = "pricing") public interface PricingService { @Resilient(policy = "pricing") @Timeout(2_000) @Retry(maxRetries = 2, delayMs = 50) @CircuitBreaker(maxFailures = 5) Future<Quote> quote(QuoteRequest request); }
Everything between the first request and the last step, with less plumbing for your team to own.
A workflow can wait days for an approval, a signal, or a timer, and it picks up where it stopped after a restart. Its state lives in PostgreSQL, so there is no orchestration cluster to run.
Dependency injection happens at compile time, and contracts are checked there too. A missing binding or a malformed declaration fails the build instead of the deployment.
Outgoing messages are written in the same transaction as the business change. The relay retries delivery, and the inbox drops a message that arrives twice.
A service call is a plain Java interface, dispatched asynchronously. The request context travels with the call, and timeouts, retries, and circuit breakers are declared on the contract.
Cron jobs and delayed jobs are coordinated across the cluster. A job that fails is recovered and retried, and one that keeps failing goes to a dead-letter queue.
The same correlation context follows a request through the API, over the message bus, and into a workflow that resumes later. Logs, metrics, and traces all carry it. The observability modules are optional.
Pick the parts your application needs.
APIs, services, workflows, and messaging all sit on the same runtime. Use the parts you need and leave the rest out.
In a typical framework an agent works from web docs written for some other version, wiring that is resolved at runtime, and mistakes that only show up when the service starts. Vertique puts those answers where an agent can read them, and the compiler checks the rest.
One capture policy and one redaction policy apply at every supported boundary, and the result is a structured record delivered to your audit sinks.