像下面这样指定添加到你环境中的 Queue 生产者:
const mf = new Miniflare({
queueProducers: { MY_QUEUE: "my-queue" },
queueProducers: ["MY_QUEUE"], // 如果绑定名称和队列名称相同
});像下面这样指定从你的 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"], // 如果使用默认消费者选项
});为了进行测试,在 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"