Skip to content

Background jobs and durable outbox

The full profile includes an opt-in durable outbox for resource-change events. It is disabled by default and does not add a broker dependency or alter REST responses.

Enable it after applying database migrations:

OUTBOX_ENABLED=true

When enabled, successful CRUD events are stored in OutboxMessages. The background processor polls pending messages, records attempts and failures, and retries messages that remain unprocessed. Replace IOutboxMessageHandler with a handler that publishes to the selected queue or job system. Consumers must be idempotent because delivery is at-least-once.

The default handler only records that a message was observed; it is safe for development but is not a production transport. For stronger transactional guarantees, keep application writes and outbox insertion in the same database transaction in the generated application's domain workflow.

The minimal profile remains dependency-free and has no background worker.