跳转到内容
搜索文档

队列 (Queues)

最后更新 查看 MarkdownAgent 设置

生产者 (Producers)

像下面这样指定添加到你环境中的 Queue 生产者:

const mf = new Miniflare({
	queueProducers: { MY_QUEUE: "my-queue" },
	queueProducers: ["MY_QUEUE"], // 如果绑定名称和队列名称相同
});

消费者 (Consumers)

像下面这样指定从你的 Queues 中消费消息的 Workers:

const mf = new Miniflare({
	queueConsumers: {
		"my-queue": {
			maxBatchSize: 5, // 默认:5
			maxBatchTimeout: 1 /* 秒 */, // 默认:1
			maxRetries: 2, // 默认:2
			deadLetterQueue: "my-dead-letter-queue", // 默认:无
		},
	},
	queueConsumers: ["my-queue"], // 如果使用默认消费者选项
});

在 Workers 外部操作

为了进行测试,在 Worker 外部与 Queues 交互非常有价值。你可以通过使用 workers 选项在同一实例中运行多个 Worker 来做到这一点:

const mf = new Miniflare({
	workers: [
		{
			name: "a",
			modules: true,
			script: `
			export default {
				async fetch(request, env, ctx) {
					await env.QUEUE.send(await request.text());
				}
			}
			`,
			queueProducers: { QUEUE: "my-queue" },
		},
		{
			name: "b",
			modules: true,
			script: `
			export default {
				async queue(batch, env, ctx) {
					console.log(batch);
				}
			}
			`,
			queueConsumers: { "my-queue": { maxBatchTimeout: 1 } },
		},
	],
});

const queue = await mf.getQueueProducer("QUEUE", "a"); // 从 worker "a" 中获取
await queue.send("message"); // 1 秒后打印 "message"

这篇文档对您有帮助吗?