簡體   English   中英

如何在 Node.js 中使用 Cloud Tasks 實現拉取隊列

[英]How to implement a pull-queue using Cloud Tasks in Node.js

我正在嘗試在 Node.js 中使用 Cloud Tasks + App Engine 標准環境實現拉取隊列。 所以基本上我試圖從隊列中租用任務。 問題是我只能找到其他語言的示例,而且我在 GCP Node.js 文檔中沒有提到創建或租用拉隊列任務。

請告訴我這是可能的,我不需要在我的項目中開始使用不同的語言來實現拉隊列機制。

這是等效的 Python 文檔的鏈接

- - 編輯 - -

我設法在允許我這樣做的類型中找到了一個參考:

import { v2beta2 } from "@google-cloud/tasks";
const client = new v2beta2.CloudTasksClient();
const [{ tasks }] = await client.leaseTasks({
  parent: client.queuePath(project, location, "my-pull-queue"),
  maxTasks: 100,
});

...但它給了我一些奇怪的配額錯誤:

錯誤:無法從 my-pull-queue 隊列租用任務:8 RESOURCE_EXHAUSTED:超出配額指標“Alpha API 請求”的配額並限制服務“cloudtasks.googleapis”的“每分鍾 Alpha API 請求數(除非列入白名單,否則應為 0)” .com' 用於消費者 'project_number:xxx'。

我幾乎找不到引用此類配額錯誤的來源,但它似乎源於尚未公開的 API,並且只能在明確授予訪問權限時使用(這將解釋白名單)。

我覺得很奇怪的另一件事是似乎有兩個 beta 客戶端 v2beta2 和 v2beta3,但只有 beta2 類型定義了租用任務的方法。 兩個 beta API 都定義了用於創建 pull-queue 任務的類型。

我想我找到了答案。 它非常隱蔽,但我設法在允許我這樣做的類型中找到了一個參考:

const client = new CloudTasksClient({
  libVersion: "v2beta2",
}) as unknown as v2beta2.CloudTasksClient;
const [{ tasks }] = await client.leaseTasks({
  parent: client.queuePath(project, location, "my-pull-queue"),
  maxTasks: 100,
});

- - 編輯 - -

通過選項傳遞庫版本似乎不起作用。 結果客戶端給出運行時錯誤,因為該對象上不存在leaseTasks

然而,下面的方法似乎有效

import { v2beta2 } from "@google-cloud/tasks";
const client = new v2beta2.CloudTasksClient();

...但它給了我一些奇怪的配額錯誤:

錯誤:無法從 my-pull-queue 隊列租用任務:8 RESOURCE_EXHAUSTED:超出配額指標“Alpha API 請求”的配額並限制服務“cloudtasks.googleapis”的“每分鍾 Alpha API 請求數(除非列入白名單,否則應為 0)” .com' 用於消費者 'project_number:xxx'。

我剛剛發現這個聲明 Node.js 不支持拉隊列。

https://github.com/googleapis/nodejs-tasks/issues/123#issuecomment-445090253

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM