如何配置nest/Bull redis连接

问题描述 投票:0回答:3

我在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 连接:

redsight connection

那么 - 底线 - 如何在 Bull 中配置 redis 节点以进行远程连接?

redis nestjs bull
3个回答
1
投票

根据我的测试,公牛设置从不接受不同于默认端口 6379 的 Redis 端口。


0
投票

可能env文件还没有加载。您可以尝试在此文件的顶部添加

import 'dotenv/config'


0
投票

也许nestjs应用程序还没有从env文件加载配置,您可以尝试使用异步配置:

BullModule.forRootAsync({
  imports: [ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    redis: {
      host: configService.get<string>('REDIS_HOST'),
      ... your configs
    },
  }),
  inject: [ConfigService],

}),
© www.soinside.com 2019 - 2024. All rights reserved.