ObjectStackObjectStack

Worker

Worker protocol schemas

Worker System Protocol

Background task processing system with queues, priorities, and retry logic.

Provides a robust foundation for async task execution similar to:

  • Sidekiq (Ruby)

  • Celery (Python)

  • Bull/BullMQ (Node.js)

  • AWS SQS/Lambda

Features:

  • Task queues with priorities

  • Task scheduling and retry logic

  • Batch processing

  • Dead letter queues

  • Task monitoring and logging

@example Basic task


const task: Task = \{

id: 'task-123',

type: 'send_email',

payload: \{ to: 'user@example.com', subject: 'Welcome' \},

queue: 'notifications',

priority: 5

\};

Source: packages/spec/src/system/worker.zod.ts

TypeScript Usage

import { BatchProgress, QueueConfig, Task, TaskExecutionResult, TaskPriority, TaskRetryPolicy, TaskStatus, WorkerStats } from '@objectstack/spec/system';
import type { BatchProgress, QueueConfig, Task, TaskExecutionResult, TaskPriority, TaskRetryPolicy, TaskStatus, WorkerStats } from '@objectstack/spec/system';

// Validate data
const result = BatchProgress.parse(data);

BatchProgress

Properties

PropertyTypeRequiredDescription
batchIdstringBatch job identifier
totalintegerTotal number of items
processedintegerItems processed
succeededintegerItems succeeded
failedintegerItems failed
percentagenumberProgress percentage
statusEnum<'pending' | 'running' | 'completed' | 'failed' | 'cancelled'>Batch status
startedAtstringoptionalWhen batch started
completedAtstringoptionalWhen batch completed

QueueConfig

Properties

PropertyTypeRequiredDescription
namestringQueue name (snake_case)
concurrencyintegerMax concurrent task executions
rateLimitObjectoptionalRate limit configuration
defaultRetryPolicyObjectoptionalDefault retry policy for tasks
deadLetterQueuestringoptionalDead letter queue name
priorityintegerQueue priority (lower = higher priority)
autoScaleObjectoptionalAuto-scaling configuration

Task

Properties

PropertyTypeRequiredDescription
idstringUnique task identifier
typestringTask type (snake_case)
payloadanyTask payload data
queuestringQueue name
priorityEnum<'critical' | 'high' | 'normal' | 'low' | 'background'>Task priority level
retryPolicyObjectoptionalRetry policy configuration
timeoutMsintegeroptionalTask timeout in milliseconds
scheduledAtstringoptionalISO 8601 datetime to execute task
attemptsintegerNumber of execution attempts
statusEnum<'pending' | 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled' | 'timeout' | 'dead'>Current task status
metadataObjectoptionalTask metadata

TaskExecutionResult

Properties

PropertyTypeRequiredDescription
taskIdstringTask identifier
statusEnum<'pending' | 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled' | 'timeout' | 'dead'>Execution status
resultanyoptionalExecution result data
errorObjectoptionalError details if failed
durationMsintegeroptionalExecution duration in milliseconds
startedAtstringWhen execution started
completedAtstringoptionalWhen execution completed
attemptintegerAttempt number (1-indexed)
willRetrybooleanWhether task will be retried

TaskPriority

Allowed Values

  • critical
  • high
  • normal
  • low
  • background

TaskRetryPolicy

Properties

PropertyTypeRequiredDescription
maxRetriesintegerMaximum retry attempts
backoffStrategyEnum<'fixed' | 'linear' | 'exponential'>Backoff strategy between retries
initialDelayMsintegerInitial retry delay in milliseconds
maxDelayMsintegerMaximum retry delay in milliseconds
backoffMultipliernumberMultiplier for exponential backoff

TaskStatus

Allowed Values

  • pending
  • queued
  • processing
  • completed
  • failed
  • cancelled
  • timeout
  • dead

WorkerStats

Properties

PropertyTypeRequiredDescription
workerNamestringWorker name
totalProcessedintegerTotal tasks processed
succeededintegerSuccessful tasks
failedintegerFailed tasks
activeintegerCurrently active tasks
avgExecutionMsnumberoptionalAverage execution time in milliseconds
uptimeMsintegerWorker uptime in milliseconds
queuesRecord<string, Object>optionalPer-queue statistics

On this page