ras*_*man 5 google-cloud-platform
我正在查看此处的文档:
https : //cloud.google.com/tasks/docs/dual-overview
在配额中:
https : //cloud.google.com/tasks/docs/quotas
我仍然不确定如何启用或禁用此重复数据删除功能。想知道能不能设置Task de-duplication window
任务重复数据删除是指确保任务名称不重复。
根据文档,它的工作原理如下:
显式指定任务 ID 可以启用任务重复数据删除。如果任务的 ID 与现有任务或最近删除或执行的任务的 ID 相同,则调用将失败并显示
google.rpc.Code.ALREADY_EXISTS。如果任务的队列是使用 Cloud Tasks 创建的,则在删除或执行原始任务后约 1 小时内无法创建同名的另一个任务。
如果任务的队列是使用queue.yaml或queue.xml创建的,则在删除或执行原始任务后约9天内无法创建同名的另一个任务。
由于识别重复任务名称需要额外的查找成本,因此这些
tasks.create调用显着增加了延迟。
小智 6
我们有同样的问题。
为了不向用户发送垃圾邮件,我们一直在寻找一种机制来控制某些通知类型的重复数据删除功能。
由于它们检查 TASK_ID - 我们可以通过添加一些独特的东西来使用它来控制重复数据删除。例如时间戳。
TASK_ID 是任务名称的最后部分。任务名称看起来像这样 -
projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID。
如果我们需要创建一个每 10 秒执行一次的任务 - 我们可以生成这样的名称 - projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/notification-like-${timestamp}。
在这 10 秒内创建的其他任务将被拒绝并出现错误。
生成任务名称的 JavaScript 片段
/**
* Round time up to given coefficient.
* @param {number} coefficient - Coefficient in milliseconds.
*/
const roundTime = (coefficient) => {
const date = new Date();
return new Date(Math.ceil(date.getTime() / coefficient) * coefficient).getTime();
};
const coefficient = 1000 * 10; // Trigger once per 10 seconds
const taskId = `notification-like-${roundTime(coefficient)}`;
const taskName = `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/${taskId}`;
console.log(taskName);
// projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/notification-like-1643898560000Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |