Workers
External workers are processes you run. Registration is optional metadata; pull authorization uses your API key or JWT permissions.
High-level SDK loop
const rest = new QPub.Rest({ apiKey: process.env.QPUB_API_KEY });
const worker = await rest.queues.registerWorker({
name: "email-worker",
queues: ["emails"],
});
await rest.queues.runWorker(
"emails",
async (job) => {
// process job.payload
return { ok: true }; // sent as ack result
},
{
workerId: worker.id,
batchSize: 1,
pollIntervalMs: 1000,
wait: "20s",
}
);
// Elsewhere:
// rest.queues.stopWorker();
runWorker blocks until stopWorker() is called.
Low-level pull / ack / nack
POST /v1/queue/:queueName/pull
POST /v1/queue/:queueName/jobs/:jobId/ack
POST /v1/queue/:queueName/jobs/:jobId/nack
Pull body:
{
"worker_id": "01J...",
"batch_size": 1,
"wait": "5s"
}
Ack:
{ "worker_id": "01J...", "result": { "ok": true } }
Nack:
{
"worker_id": "01J...",
"reason": "temporary failure",
"retry_delay": "30s"
}
Register and heartbeat
POST /v1/workers/register
POST /v1/workers/heartbeat
await rest.queues.registerWorker({ name: "email-worker", queues: ["emails"] });
await rest.queues.heartbeat(workerId);
The queues array on registration is declarative metadata. It does not replace permission checks on pull.
Previous
Jobs
Next
Socket SDK