Table of Contents

Namespace Millrace

Namespaces

Millrace.Dashboard
Millrace.Diagnostics
Millrace.Invocations
Millrace.Scheduling
Millrace.Storage
Millrace.Tenancy
Millrace.Testing
Millrace.Workflows

Classes

EnqueueOptions

Per-job options for IJobClient calls (ARCHITECTURE.md §5.2).

JobBatch

Jobs to enqueue together, in one round trip and one transaction.

JobClient

Default IJobClient: captures expressions into records and hands them to storage.

JobFactory

Turns a captured call into a record, with the client's ambient settings applied.

JobIdJsonConverter

Serializes JobId as a bare GUID string rather than an object.

MillraceBuilder

Configuration surface handed to AddMillrace. Storage registration is last-wins (via Services.Replace) — the documented contract provider packages build on, so the final composition-root registration (including test-host overrides) deterministically wins.

MillraceBuilderPostgreSqlExtensions

Registers the PostgreSQL provider: services.AddMillrace(w => w.UsePostgreSqlStorage(cs)).

MillraceBuilderSqlServerExtensions

Registers the SQL Server provider: services.AddMillrace(w => w.UseSqlServerStorage(cs)).

MillraceOptions

Node-level configuration for workers, scheduling, and serialization.

Retry

Retry policy for a job. Serialized into the JobRecord as plain data — the engine, not the storage provider, evaluates it. MaxAttempts counts total attempts including the first, so Retry.Exponential(5) means at most five executions.

WorkflowInstanceIdJsonConverter

Serializes WorkflowInstanceId as a bare GUID string.

Structs

JobId

Identifies a single job in the substrate. Generated exclusively by the engine — storage providers persist ids verbatim, treat them as opaque, and never mint or order by them. Version 7 GUIDs keep storage indexes append-friendly.

WorkflowInstanceId

Identifies a workflow instance. Generated by the engine; opaque to storage providers.

Interfaces

IJobClient

The public enqueue API (ARCHITECTURE.md §5.2). Expressions capture the declared service type, method, and serialized arguments; the target is resolved from the consumer's DI container inside a scope at execution time. Instance methods returning Task only in 0.1; keep job signatures stable and pass ids, not entities.

Enums

RetryKind

How retry delays are computed.