Hyperlinkv0.8.0-beta.28

QueueHyperlink

QueueHyperlink.QueueHyperlinkinterfacesrc/QueueHyperlink.ts:844
QueueHyperlink<Payload, Success, Error, Requirements>

A queue handle — the value yield* MyQueue produces. The named compact form of a queue's service (both the light Tag path and the engine-included Service path yield this one type), so it hovers as QueueHyperlink<EmailJob> instead of an expanded member wall; prettify-ts / the docs D3 popover expand it to the full shape on demand.

modelsQueueHyperlink.eventsHyperlink.client
export interface QueueHyperlink<
  Payload,
  Success = void,
  Error = never,
  Requirements = never,
> {
  /** Live current-state snapshot (per-priority sizes, paused, in-flight, completed, phase). */
  readonly status: Hyperlink.Subscribable<QueueStatus>;
  /** Total pending items across all priority levels. */
  readonly size: Hyperlink.Subscribable<number>;
  /** Whether all priority queues are empty. */
  readonly isEmpty: Hyperlink.Subscribable<boolean>;
  /** Fork the worker pool + lifecycle monitor (idempotent; no-op after shutdown). */
  readonly start: Effect.Effect<void, never, Requirements>;
  /** Pause processing; items can still be enqueued and accumulate. */
  readonly pause: Effect.Effect<void>;
  /** Resume processing after a pause. */
  readonly resume: Effect.Effect<void>;
  /** Permanently stop the queue (graceful drain). */
  readonly shutdown: Effect.Effect<void>;
  /** Drain all pending items and reset the completed counter; returns the count cleared. */
  readonly clear: Effect.Effect<number, never, Requirements>;
  /** Windowed metrics: the live `stream` plus a historical `query` (needs a HistoryStore). */
  readonly metrics: {
    readonly stream: Stream.Stream<QueueMetrics>;
    readonly query: (input: {
      readonly limit?: number;
      readonly since?: DateTime.Utc;
      readonly until?: DateTime.Utc;
    }) => Effect.Effect<ReadonlyArray<QueueMetrics>, never, Requirements>;
  };
  /** Enqueue an item (or a batch) at normal priority. */
  readonly add: QueueEnqueue<Payload, never, Requirements>;
  /** Enqueue at high priority (processed before normal and low). */
  readonly prioritize: QueueEnqueue<Payload, never, Requirements>;
  /** Enqueue at low priority (processed after high and normal). */
  readonly defer: QueueEnqueue<Payload, never, Requirements>;
  /** Re-inject existing entries (each re-enters at its own priority with attempts preserved). */
  readonly enqueue: (
    entries: ReadonlyArray<QueueEntry<Payload>>,
  ) => Effect.Effect<void, never, Requirements>;
  /** Export pending entries for handoff and remove them; returns them decoded. */
  readonly release: (input: {
    readonly options?: QueueReleaseOptions;
  }) => Effect.Effect<ReadonlyArray<QueueEntry<Payload>>, never, Requirements>;
  /** Export pending entries in encoded/wire form for remote handoff (requires an itemSchema). */
  readonly releaseEncoded: (input: {
    readonly options?: QueueReleaseOptions;
  }) => Effect.Effect<
    ReadonlyArray<Hyperlink.Decoded<typeof queueEncodedEntry>>,
    QueueReleaseEncodingError,
    Requirements
  >;
  /** Remove pending entries matching the selector and route them to a dead letter. */
  readonly deadLetter: (input: {
    readonly selector: QueueEntrySelector<Payload> | QueueEntry<Payload>;
    readonly options: QueueRouteOptions;
  }) => Effect.Effect<ReadonlyArray<QueueEntry<Payload>>, never, Requirements>;
  /** Remove pending entries matching the selector without preserving them. */
  readonly drop: (input: {
    readonly selector: QueueEntrySelector<Payload> | QueueEntry<Payload>;
    readonly options: QueueRouteOptions;
  }) => Effect.Effect<ReadonlyArray<QueueEntry<Payload>>, never, Requirements>;
  /** Discrete entry / worker / queue lifecycle events. */
  readonly events: Stream.Stream<QueueEvent<Payload, Error, Success>>;
}
Referenced by 2 symbols