我在nest.js中使用BullModule。
当我连接到本地 Redis 时,它可以工作:
const REDIS = {
host: 'localhost',
};
@Module({
imports: [
TaskTypesModule,
TasksModule,
ScheduleModule.forRoot(),
BullModule.forRoot({
// @ts-ignore
redis: REDIS,
}),
],
controllers: [AppController],
providers: [AppService, PrismaService],
})
export class AppModule {}
但是当我连接到远程系统时
const REDIS = {
host: process.env.REDIS_ENDPOINT,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASSWORD,
};
使用环境文件
REDIS_USERNAME=default
REDIS_PASSWORD=p----------------------S
REDIS_ENDPOINT=redis-1xxxxx4.c261.us-east-1-4.ec2.cloud.redislabs.com
REDIS_PORT=1xxxxx4
它不会写入redis队列;作为比较,我可以通过 redisight 连接:
那么 - 底线 - 如何在 Bull 中配置 redis 节点以进行远程连接?
根据我的测试,公牛设置从不接受不同于默认端口 6379 的 Redis 端口。
可能env文件还没有加载。您可以尝试在此文件的顶部添加
import 'dotenv/config'
。
也许nestjs应用程序还没有从env文件加载配置,您可以尝试使用异步配置:
BullModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
redis: {
host: configService.get<string>('REDIS_HOST'),
... your configs
},
}),
inject: [ConfigService],
}),