What is @google-cloud/tasks?
@google-cloud/tasks is a Node.js client library for Google Cloud Tasks, which allows you to manage the execution of large numbers of distributed requests. It provides a way to create, manage, and dispatch tasks to App Engine, HTTP, or Cloud Pub/Sub targets.
What are @google-cloud/tasks's main functionalities?
Create a Task
This feature allows you to create a new task in a specified queue. The task can be an HTTP request with a payload.
const {CloudTasksClient} = require('@google-cloud/tasks');
const client = new CloudTasksClient();
async function createTask() {
const project = 'my-project-id';
const queue = 'my-queue';
const location = 'us-central1';
const url = 'https://example.com/taskhandler';
const payload = 'Hello, World!';
const parent = client.queuePath(project, location, queue);
const task = {
httpRequest: {
httpMethod: 'POST',
url,
body: Buffer.from(payload).toString('base64'),
headers: {
'Content-Type': 'application/json',
},
},
};
const request = {parent, task};
const [response] = await client.createTask(request);
console.log(`Created task ${response.name}`);
}
createTask().catch(console.error);
Delete a Task
This feature allows you to delete a specified task from a queue.
const {CloudTasksClient} = require('@google-cloud/tasks');
const client = new CloudTasksClient();
async function deleteTask() {
const project = 'my-project-id';
const queue = 'my-queue';
const location = 'us-central1';
const task = 'my-task-id';
const name = client.taskPath(project, location, queue, task);
await client.deleteTask({name});
console.log(`Deleted task ${name}`);
}
deleteTask().catch(console.error);
List Tasks
This feature allows you to list all tasks in a specified queue.
const {CloudTasksClient} = require('@google-cloud/tasks');
const client = new CloudTasksClient();
async function listTasks() {
const project = 'my-project-id';
const queue = 'my-queue';
const location = 'us-central1';
const parent = client.queuePath(project, location, queue);
const [tasks] = await client.listTasks({parent});
tasks.forEach(task => {
console.log(`Task: ${task.name}`);
});
}
listTasks().catch(console.error);
Other packages similar to @google-cloud/tasks
bull
Bull is a Node library that implements a fast and robust queue system based on Redis. It provides features like delayed jobs, rate-limited jobs, and job prioritization. Compared to @google-cloud/tasks, Bull is more focused on in-memory job queues and does not offer direct integration with Google Cloud services.
agenda
Agenda is a lightweight job scheduling library for Node.js that uses MongoDB as a persistence layer. It is designed for long-running jobs and provides features like job scheduling, job prioritization, and job concurrency. Unlike @google-cloud/tasks, Agenda is more suitable for applications that already use MongoDB and need a simple job scheduling solution.
kue
Kue is a priority job queue backed by Redis, built for Node.js. It provides features like job events, job retries, and job progress tracking. Kue is similar to Bull but offers a different API and feature set. It does not provide the same level of integration with Google Cloud services as @google-cloud/tasks.