Beignet API reference
    Preparing search index...

    Interface DrainOutboxOptions

    Options for draining one outbox batch.

    interface DrainOutboxOptions {
        batchSize?: number;
        concurrency?: number;
        eventBus?: {
            publish<E extends EventPayloadDef<string, StandardSchema>>(
                event: E,
                payload: InferEventPayload<E>,
                options?: EventPublishOptions,
            ): MaybePromise<void>;
        };
        heartbeatMs?: number;
        instrumentation?: ProviderInstrumentationTarget;
        instrumentationContext?: OutboxInstrumentationContext;
        jobs?: JobDispatcherPort;
        leaseMs?: number;
        maxActiveMs?: number;
        now?: () => Date;
        onDeadLetter?: (
            error: unknown,
            message: OutboxMessage,
        ) => MaybePromise<void>;
        onError?: (
            error: unknown,
            message: ClaimedOutboxMessage,
        ) => MaybePromise<void>;
        onLeaseError?: (failure: OutboxLeaseFailure) => MaybePromise<void>;
        onSettlementError?: (
            failure: OutboxSettlementFailure,
        ) => MaybePromise<void>;
        outbox: OutboxPort;
        registry: OutboxRegistry;
        retryDelayMs?:
            | number
            | (
                (
                    args: { error: unknown; message: ClaimedOutboxMessage; now: Date },
                ) => number
            );
        wait?: OutboxDrainWait;
    }
    Index
    batchSize?: number

    Maximum eligible messages to handle in one drain pass.

    concurrency?: number

    Maximum messages delivered concurrently. Defaults to serial delivery. Values greater than one do not preserve delivery order.

    eventBus?: {
        publish<E extends EventPayloadDef<string, StandardSchema>>(
            event: E,
            payload: InferEventPayload<E>,
            options?: EventPublishOptions,
        ): MaybePromise<void>;
    }

    Event bus used for event messages. Required when the registry contains events.

    heartbeatMs?: number

    Interval between serialized claim renewals. Defaults to one third of the lease duration and must remain shorter than the lease.

    Optional instrumentation target for delivery, retry, and dead-letter visibility.

    instrumentationContext?: OutboxInstrumentationContext

    Optional correlation fields attached to outbox instrumentation events.

    Job dispatcher used for job messages. Required when the registry contains jobs.

    leaseMs?: number

    Claim lease duration in milliseconds.

    maxActiveMs?: number

    Maximum time Beignet renews a claim for one delivery. When exceeded, the drain stops renewing and leaves final recovery to the last lease expiry.

    now?: () => Date

    Clock used independently for claiming, renewal, settlement, and retry scheduling. Defaults to the system clock.

    onDeadLetter?: (error: unknown, message: OutboxMessage) => MaybePromise<void>

    Observer called after a failed delivery is successfully moved to the dead letter state. Observer failures are ignored.

    onError?: (error: unknown, message: ClaimedOutboxMessage) => MaybePromise<void>

    Observer called when delivery fails. Observer failures are ignored so the original delivery failure still controls retry/dead-letter behavior.

    onLeaseError?: (failure: OutboxLeaseFailure) => MaybePromise<void>

    Observer called when claim renewal degrades or ownership is lost. Observer failures are ignored.

    onSettlementError?: (failure: OutboxSettlementFailure) => MaybePromise<void>

    Observer called when a delivery outcome cannot be settled durably. Observer failures are ignored.

    outbox: OutboxPort

    Outbox storage port.

    registry: OutboxRegistry

    Registry used to resolve message names to event/job definitions.

    retryDelayMs?:
        | number
        | (
            (
                args: { error: unknown; message: ClaimedOutboxMessage; now: Date },
            ) => number
        )

    Retry delay in milliseconds or function for per-message delay.

    Abort-aware wait implementation. Inject a deterministic implementation in tests; production callers normally use the default timer.