【问题标题】:QueueEvents don't trigger with BullMQ using Heroku Redis使用 Heroku Redis 的 BullMQ 不会触发 QueueEvents
【发布时间】: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


    【解决方案1】:
    const queueEvents = new QueueEvents("Paint", { connection: connection.duplicate() });
    

    https://github.com/taskforcesh/bullmq/issues/173

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2016-06-23
      • 1970-01-01
      • 2013-08-28
      • 2014-09-22
      • 2012-09-25
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多