@book/queue (0.1.0)
Installation
@book:registry=https://git.teawin.ru/api/packages/moonlight/npm/npm install @book/queue@0.1.0"@book/queue": "0.1.0"About this package
@book/queue
HTTP-клиент очередей Book и worker. Планируемый npm-формат: ESM JavaScript и .d.ts в dist, начальная версия 0.1.0.
Установка
Настройте @book registry и auth token по общей инструкции, затем:
npm install @book/queue
Использование
import { QueueClient } from "@book/queue/client";
import { createQueueWorker } from "@book/queue/worker";
const client = new QueueClient({ baseUrl: "https://book.example.com" });
await client.enqueue("demo", { payload: { message: "Привет" } });
const worker = createQueueWorker(client, {
queue: "demo",
concurrency: 2,
async handler(task, { signal }) {
signal.throwIfAborted();
console.log(task.payload);
return { processed: true };
},
onError: console.error,
});
const running = worker.start(); // Promise завершается после остановки, не при запуске.
// При завершении приложения:
await worker.stop({ timeoutMs: 5000 });
await running;
Для защищённого API передайте token в QueueClient; это токен Book, не npm registry. Клиент также принимает собственный fetch.
Публичный API
@book/queue—QueueClient,QueueHttpError,createQueueWorkerи публичные типы, включаяQueueTaskиQueueTransport.@book/queue/client—QueueClient,QueueHttpError, типыQueueClientOptionsиQueueStats.@book/queue/worker—createQueueWorkerи типы worker.
Клиент: enqueue, claim, ack, nack, extend, get, cancel, stats, listDead, redrive. При постановке доступны id, delayMs, availableAt, deadlineAt, maxAttempts; payload обязателен.
Worker получает задачи, продлевает lease и подтверждает результат обработчика. Настройки: queue, handler, concurrency, leaseMs, waitMs, onError. Обработчик должен учитывать signal при остановке по тайм-ауту.
Старые импорты queue/client.ts, queue/worker.ts и остальных модулей queue/ сохранены через переэкспорты. Локальная проверка и релиз описаны для обоих пакетов вместе.