这个错误是因为Bull队列无法连接到Redis数据库。这个问题可以通过使用docker-compose文件来解决。在docker-compose文件中,您可以通过添加“links”选项将容器链接在一起,使它们可以相互通信。以下是示例代码:
version: '3'
services:
redis:
image: 'redis:latest'
ports:
- '6379:6379'
worker:
build:
context: .
links:
- redis
在这个示例中,我们定义了两个服务:Redis和Worker。Worker是我们的应用程序,Redis是我们的数据库。我们将Redis端口映射到主机的6379端口,并将Worker连接到Redis服务。运行docker-compose up命令来启动这些服务。
通过这种方式,Bull队列就可以连接到Redis数据库了。您还可以通过将环境变量传递给Worker来指定Redis连接信息:
const Queue = require('bull');
const queue = new Queue('example', {
redis: {
host: process.env.REDIS_HOST || 'localhost',
port: process.env.REDIS_PORT || 6379,
},
});
queue.add('job', { data: 123 });
这里我们使用了环境变量来指定Redis主机和端口。如果没有传递环境变量,将使用默认值(localhost和6379)。