long-running-pubsub
A Node.js Google Cloud Pub/Sub client that closely mirrors the REST API with added support for long running tasks and jobs.
- Manual control over pull and publish
- Manual support for controlling a message's
ackDeadline
- Automatic support for long-running job management
Quick Start
To get started, follow the the usual Google Cloud API procedure to set up your project, authenticate, and enable API access.
Usage for long running tasks
const PubSub = require('long-running-pubsub');
const client = new PubSub({
project: PROJECT_ID,
});
const job = client.pullLongRunningJob(SUBSCRIPTION, {
extendBy: 15000,
withPeriod: 10000
});
job.then(payload => {
if (!payload) {
console.log(`There are no messages on the queue.`);
return;
}
console.log(`Starting a long running job...`);
setTimeout(() => {
console.log(`Job done.`);
client.acknowledgeLongRunningJob(SUBSCRIPTION, payload.ackId)
.then(() => {
console.log(`Job status acknowledged`);
})
}, 120000);
})
Usage with the REST API
This client exposes an interface that closely resembles the REST API so that you have
fine-grained manual control over pull, publish, and acknowledgement deadline management.
class Client {
acknowledge(subscription, ackIds)
modifyAckDeadline(subscription, ackIds, ackDeadline)
pull(subscription, { returnImmediately = true, maxMessages = 1 } = {})
pullLongRunningJob(subscription, { extendBy = 10000, withPeriod = 10000 } = {})
acknowledgeLongRunningJob(subscription, ackId)
publish(topic, messages)
}