无法将NestJS Bull连接到Elasticache(Redis)



我在部署时将NestJS Bull连接到AWS Elasticache时卡住了

在本地,我可以通过轻松连接到Redis

import { Module } from '@nestjs/common';
import { BullModule } from '@nestjs/bull';
@Module({
imports: [
BullModule.forRoot({
redis: {
host: 'localhost',
port: 6379,
password: 'secret',
},
}),
],
})
export class AppModule {}

我甚至试着穿https://app.redislabs.com/Redis官方云。它仍然有效。

但正在部署Elasticache。启动时没有错误,但队列未按预期工作

我去年的代码是有效的,但现在没有回应

import Redis from 'ioredis';
@Module({
imports: [
BullModule.forRoot({
createClient: () => {
return config.get('redis.cluster.host')
? new Redis.Cluster([
{
port: +config.get('redis.cluster.port'),
host: config.get('redis.cluster.host'),
},
])
: new Redis(+config.get('redis.standalone.port'), config.get('redis.standalone.host'));
},
}),
FeeQueue,
],
providers: [],
exports: [],
})
export class QueuesModule {}

你能有时间帮我吗?谢谢

我不知道你的情况是否会一样,但我只是遇到了类似的问题。队列不工作,但未记录任何错误。经过大量测试,我终于记录了一个错误,说enableReadyCheckmaxRetriesPerRequest不能用于bclients和subsiber。所以我取消设置它们:

BullModule.forRoot({
createClient: (type) => {
const opts =
type !== 'client'
? { enableReadyCheck: false, maxRetriesPerRequest: null }
: {}
return config.get('redis.cluster.host')
? new Redis.Cluster([{ host, port }], opts)
: new Redis({ host, port, ...opts});
},
})

最新更新