Node.js Bull队列未连接到Azure

时间:2019-09-02 14:50:57

标签: node.js azure redis queue azure-redis-cache

在更改新的Bull Queue对象内的设置时,控制台出现错误。在本地运行Bull Queue时,应用程序运行正常。一旦将凭据更改为Azure,就会出现以下错误。在本地运行时,我运行redis服务器,但在使用Azure凭据时不运行。

我已经在Azure网站上使用nodejs和redis npm包尝试了示例教程,Azure redis缓存工作得很好。因此,我相信我在配置中做错了什么。我也尝试将“ maxRetriesPerRequest”和“ enableReadyCheck”添加到redis对象,但是它们没有任何作用。我还要确保在流程函数中执行完了的函数。

const queue = new Queue('sendQueue', {
  defaultJobOptions: { removeOnComplete: true },
  redis: {
    port: env.AZURE_REDIS_PORT,
    host: env.AZURE_REDIS_HOST,
    password: env.AZURE_REDIS_PASSWORD
  },
});
at Queue.<anonymous> (/Users/abc/Projects/Sean/dist/tasks/sendQueue.js:47:11)
 at Queue.emit (events.js:208:15)
 at Redis.emit (events.js:203:13)
 at Redis.silentEmit (/Users/abc/Projects/Sean/node_modules/ioredis/built/redis/index.js:482:26)
 at Socket.<anonymous> (/Users/abc/Projects/Sean/node_modules/ioredis/built/redis/event_handler.js:122:14)
 at Object.onceWrapper (events.js:291:20)
 at Socket.emit (events.js:203:13)
 at emitErrorNT (internal/streams/destroy.js:91:8)
 at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
 at processTicksAndRejections (internal/process/task_queues.js:77:11)
Error: read ECONNRESET
 at TCP.onStreamRead (internal/stream_base_commons.js:183:27)

1 个答案:

答案 0 :(得分:0)

在使用Azure Redis缓存时尝试为TLS添加配置。应该与主机相同的配置值。没有它,我就无法建立连接。

var notificationQueue = new Queue('notifications', {
  redis: {
    port: Number(process.env.REDIS_PORT), 
    host: process.env.REDIS_HOST, 
    password: process.env.REDIS_PASS, 
    tls: {
      servername: process.env.REDIS_HOST
    }
  }});