跳至主要内容

Deno 队列

警告:这是一个不稳定的 API,随时可能更改或删除。
Deno 队列,基于 Deno KV 构建,允许您将应用程序的部分卸载或将工作安排在将来异步运行。它是为您的项目添加可扩展的后台处理的简便方法。

在 Github 上编辑
描述您的消息对象形状(可选)
interface Notification {
  forUser: string;
  body: string;
}
获取对 KV 实例的引用
const kv = await Deno.openKv();
创建通知对象
const message: Notification = {
  forUser: "alovelace",
  body: "You've got mail!",
};
将消息排队以立即送达
await kv.enqueue(message);
将消息排队以在 3 天后送达
const delay = 1000 * 60 * 60 * 24 * 3;
await kv.enqueue(message, { delay });
通过配置键检索未发送的消息
const backupKey = ["failed_notifications", "alovelace", Date.now()];
await kv.enqueue(message, { keysIfUndelivered: [backupKey] });
... 灾难来袭 ... 获取未发送的消息
const r = await kv.get(backupKey);
console.log("Found failed notification for:", r.value?.forUser);
监听并处理消息。
kv.listenQueue((msg: Notification) => {
  console.log(`Dear ${msg.forUser}: ${msg.body}`);
});

使用 Deno CLI 在本地运行 此示例

deno run --unstable-kv https://docs.deno.org.cn/examples/queues.ts