You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署BullMQ+ioredis连接Redis To Go报错ECONNREFUSED 127.0.0.1:6379

问题原因

BullMQ底层默认使用ioredis客户端连接Redis,你在index.js中手动创建的Redis客户端没有传入BullMQ的Worker实例,BullMQ会默认使用127.0.0.1:6379的本地Redis地址,完全没有用到你解析的REDISTOGO_URL配置。
本地运行正常是因为本地环境启动了默认端口的Redis服务,而Heroku的dyno没有内置本地Redis服务,因此抛出连接拒绝错误。

修复方案

你只需要在初始化BullMQ Worker时,传入Redis To Go的连接配置即可,无需单独创建冗余的Redis客户端:

const { Worker } = require('bullmq')
const url = require('url')

let redisConnection
if (process.env.REDISTOGO_URL) {
  const rtg = url.parse(process.env.REDISTOGO_URL)
  redisConnection = {
    host: rtg.hostname,
    port: rtg.port,
    password: rtg.auth.split(':')[1]
  }
} else {
  // 本地开发默认配置
  redisConnection = {
    host: '127.0.0.1',
    port: 6379
  }
}

// 第三个参数传入连接配置
const worker = new Worker('mailbot', `${__dirname}/processor.js`, {
  connection: redisConnection
})

console.info('Worker listening for jobs')

module.exports = {
  worker,
}

如果使用较新版本的ioredis,你也可以直接传入Redis连接字符串简化写法:

const worker = new Worker('mailbot', `${__dirname}/processor.js`, {
  connection: process.env.REDISTOGO_URL || 'redis://127.0.0.1:6379'
})
冗余代码清理

你原本index.js中创建的Redis客户端没有被任何逻辑使用,可以直接删除相关代码。

内容的提问来源于stack exchange,提问作者user2633709

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 00:15:03