【发布时间】:2020-07-20 08:37:30
【问题描述】:
我正在尝试使用 BullMQ 在 NodeJS 中实现一个队列,但在尝试使用远程 Redis(Heroku Redis 或 Redis Cloud)时我在生产中遇到了一些问题。
在本地,一切正常,但是当我尝试使用 REDIS_URL 时,会创建一个作业,但事件不起作用。
代码如下:
// test_job.js
import { Queue, Worker, QueueEvents } from "bullmq";
import IORedis from "ioredis";
import Dotenv from "dotenv";
Dotenv.config();
// Good
const connection = new IORedis(process.env.REDIS_URL || 6379);
// Good
const queue = new Queue("Paint", { connection });
// Good
const worker = new Worker(
"Paint",
async job => {
if (job.name === "cars") {
console.log(job.data.color);
}
},
{ connection }
);
/**
* BUG HERE: Events work in local but not when using a remote Redis (REDIS_URL)
*/
const queueEvents = new QueueEvents("Paint");
queueEvents.on("completed", jobId => {
console.log("done painting");
});
queue.add("cars", { color: "blue" });
【问题讨论】:
标签: javascript node.js heroku redis queue