@nwire/queue
v0.15.1
Published
Nwire — queue transport contract + InMemory default + createQueueWorker. Production adapters land as @nwire/bullmq, @nwire/queue-sqs, @nwire/queue-pgboss.
Readme
@nwire/queue
Background-job transport — contract + in-memory default + adopter. Use directly in dev/tests; swap to
@nwire/bullmqfor production.
pnpm add @nwire/queueAs an adopter
The 0.10 way: queueInMemory() returns an Adapter that consumes wires
whose binding.$adapter === "queue". Stack it on the same endpoint as
httpKoa so a single app serves HTTP + queue with the same handlers.
import { createApp } from "@nwire/app";
import { endpoint } from "@nwire/endpoint";
import { queue } from "@nwire/wires/queue";
import { httpKoa } from "@nwire/koa";
import { queueInMemory } from "@nwire/queue";
const app = createApp({ appName: "svc" });
app.wire(queue("emails.send"), async (input) => {
/* send mail */
});
const q = queueInMemory();
await endpoint("svc", { port: 3000 }).use(httpKoa()).use(q).mount(app).run();
await q.enqueue("emails.send", { userId: "u-1" });
// queue subscriber dispatches the wire's handler.Low-level contract
For embedding in tests or building custom adapters, the underlying
QueueTransport interface ships unchanged:
import { InMemoryQueueTransport, createQueueWorker, type QueueTransport } from "@nwire/queue";
const transport = new InMemoryQueueTransport();
const worker = createQueueWorker(app, transport, {
subscribe: [
{ queue: "emails", action: "sendWelcomeEmail" },
{ queue: "reports", action: "generateMonthlyReport", retry: { attempts: 3 } },
],
});
await transport.enqueue("emails", { userId: "u-1" });
await worker.start();Surface
queueInMemory(config?)— 0.10 adopterQueueTransport— pluggable contract (in-memory, BullMQ, SQS, …)InMemoryQueueTransport— process-local default;delayMs-awarecreateQueueWorker(app, transport, opts)— bind queues to actionsqueueInterface()— typed binding factory (queue("emails.send"))
Related
@nwire/bullmq— production queue adapter (Redis)@nwire/wires—queue()binding helper@nwire/endpoint— adopter lifecycle host
