检查云任务队列是不是为空

Posted

技术标签:

【中文标题】检查云任务队列是不是为空【英文标题】:Check if Cloud Task Queue is empty检查云任务队列是否为空 【发布时间】:2021-02-01 17:01:25 【问题描述】:

我正在开发一个带有 Node.js 后端的项目。它有一个 Cloud Task 队列组件,可以创建数百个任务。完成所有任务后,我需要运行一些东西。我一直在翻阅 Cloud Task 队列文档并在线搜索。但是,我还没有找到任何有关如何执行此操作的文档。我只需要知道如何确定任务队列是否为空。如果添加任务后为空,则认为任务全部完成。

My Cloud Task 队列客户端的初始化如下: const client = new CloudTasksClient()

编辑:

我想注意一些我在这里找到的文档,这些文档似乎表明它可能提供我正在寻找的东西,但我不知道如何实现它,我没有看到任何示例。 https://cloud.google.com/tasks/docs/reference/rpc/google.cloud.tasks.v2#google.cloud.tasks.v2.ListTasksResponse

【问题讨论】:

【参考方案1】:

这里是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();

【讨论】:

谢谢。我看过那个文档样本。但是,它调用了一行代码(如您引用的代码中所述):const cloudtasks = google.cloudtasks('v2'); 但我将其实例化为:const client = new CloudTasksClient() 那么,您如何根据该差异调整第一行代码工作? 更新答案。

以上是关于检查云任务队列是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

如何检查处理 Celery 任务的队列

Flutter上线项目实战——队列任务

Flutter上线项目实战——队列任务

js-EventLoop

如何实现延迟队列

Apache Kafka 是不是适合用作无序任务队列?