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

部署Medusa.js时Redis与Railway后端连接失败及BullMQ报错问题

解决Medusa.js部署时Redis连接与BullMQ错误问题

核心问题分析

你遇到的getaddrinfo ENOTFOUND redis.railway.internal是DNS解析失败,说明应用无法识别Redis实例的私有域名。尽管日志显示redis、event-bus-redis、redis-cache已建立连接,但BullMQ的报错(来自JobSchedulerService)表明Medusa的任务调度模块未正确复用Redis连接配置。

具体解决步骤

  1. 确认Redis URL准确性

    • 核对Railway控制台给出的Redis实例完整连接地址,确保Redis.REDIS_URL变量值包含密码、端口等完整信息,格式示例:redis://default:your_password@redis.railway.internal:6379
    • 先不手动拼接family参数,直接使用原始URL测试,部分平台Redis实例不支持强制指定IP版本
  2. 显式配置BullMQ的Redis连接
    由于Medusa的event-bus-redis和任务调度默认复用全局Redis配置,但可能存在配置传递失效问题,直接在medusa-config.js中指定BullMQ的Redis选项:

    module.exports = {
      // 其他原有配置...
      redis_url: process.env.Redis.REDIS_URL,
      event_bus: {
        resolve: "@medusajs/event-bus-redis",
        options: {
          redisUrl: process.env.Redis.REDIS_URL,
          redisOptions: {
            family: 4, // 强制使用IPv4,部分平台私有网络仅支持该版本
            retryDelayOnFailover: 100,
            enableReadyCheck: true,
            maxRetriesPerRequest: 3,
          },
        },
      },
      jobScheduler: {
        options: {
          redis: {
            connection: process.env.Redis.REDIS_URL,
            options: {
              family: 4,
              enableReadyCheck: true,
            },
          },
        },
      },
    };
    
  3. 验证私有网络连通性

    • 确认Medusa应用所在的Railway服务已启用私有网络,且Redis实例与应用处于同一私有网络环境
    • 在应用容器内执行nslookup redis.railway.internal测试DNS解析,若仍失败,联系Railway支持确认私有网络配置
  4. 检查依赖版本兼容性

    • 核对@medusajs/medusa、@medusajs/event-bus-redis、bullmq的版本匹配度,建议使用Medusa官方推荐的版本组合,避免版本冲突导致连接异常

额外排查点

  • 查看Railway的Redis实例日志,确认是否存在连接拒绝或认证失败记录,排除密码错误或实例未启动问题
  • 检查应用环境变量加载情况,确保Redis.REDIS_URL无拼写错误(如大小写问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:59:58