问题描述
我正在开发一个具有Node.js后端的项目。它具有一个Cloud Task队列组件,可创建数百个任务。所有任务完成后,我需要运行某些程序。我一直在查看Cloud Task队列文档并在线搜索。但是,我还没有找到有关如何精确执行此操作的任何文档。我需要知道的是如何确定任务队列是否为空。如果添加任务后为空,则认为任务已全部完成。
我的Cloud Task队列客户端初始化如下:
const client = new CloudTasksClient()
编辑:
我想记录一下我在这里找到的一些文档,这些文档似乎表明它可能提供了我想要的内容,但是我不知道如何实现它,我没有看到任何示例。 https://cloud.google.com/tasks/docs/reference/rpc/google.cloud.tasks.v2#google.cloud.tasks.v2.ListTasksResponse
解决方法
关于如何列出队列中任务的信息,这里是official documentation。请注意,此示例使用应用程序默认凭据进行身份验证,因此您需要在gcloud CLI上登录。
还有另一个reference。此示例与列出队列有关,但是也适用于使用client.listTasks()
列出任务。
我测试了这段代码,它起作用了:
const {CloudTasksClient} = require('@google-cloud/tasks');
const client = new CloudTasksClient();
async function main () {
const request = {
parent: 'projects/PROJECT-ID/locations/REGION/queues/QUEUE-NAME',};
const [tasklist] = await client.listTasks(request);
if (tasklist.length > 0) {
console.log('Tasks:');
tasklist.forEach(tasklist => {
console.log(` ${tasklist.name}`);
});
} else {
console.log('No tasks found on queue!');
}
}
main();