首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么知道nestjs/bull实际上与redis有关联?

我怎么知道nestjs/bull实际上与redis有关联?
EN

Stack Overflow用户
提问于 2022-08-25 05:56:23
回答 1查看 346关注 0票数 1

我用的是带牛队列的巢。我使用@nestjs/bull包,一切都很好。但是,如果由于某种原因,我的应用程序没有连接到redis,我就不会收到任何错误。应用程序运行正常,不会收到任何错误,但不会处理队列。它只是挂着。即使是承诺也没有得到解决,它只是悬着。但是如果我的redis应用程序连接正确,那么一切都正常。现在,我想知道每次启动服务器时,redis服务器是否成功地连接到我的应用程序。

我怎么能这么做?

我已经搜索了很长一段时间了,但没有从谷歌那里得到任何东西。任何信息或资源都是有帮助的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-11-22 13:01:27

可以通过队列实例访问Redis客户端。

代码语言:javascript
运行
复制
export class SomeService {
  constructor(@InjectQueue("some-queue") private someQueue: Queue) {}

  async getQueueStatus(): RedisStatus {
    return this.someQueue.client.status;
  }
}

通过这种方式,您可以访问具有status属性type RedisStatus = "wait" | "reconnecting" | "connecting" | "connect" | "ready" | "close" | "end";的Redis客户端实例。

我们所指的队列需要导入到模块中。

代码语言:javascript
运行
复制
 BullModule.registerQueue({
  name: "some-queue",
})

您可以通过下面的服务检查Redis在启动时是否可用。注意:

需要在AppModule中调用服务的

  • 服务是初级的,我们使用delay函数在检查RedisState之前等待一秒钟。可以扩展逻辑以满足您的需要。

@Injectable()导出类RedisQueue { logger = new (“RedisQueue”);构造函数(@InjectQueue(“someQueue”)私有someQueue: someQueue){ this.init();}异步init() { try { this.delay(1000,1);this.checkQueueAvailability();} catch (e) { this.logger.error(e);} checkQueueAvailability ():void { if (this.someQueue.client.status ===“就绪”){ this.logger.log("Redis已准备好“);}this.logger.log{抛出新错误(”Redis空可用“);}}延迟(t: number,val: any) {返回新承诺(函数(解决)){setTimeout(函数(){setTimeout(Val));},t);} }

所以当你启动你的应用程序时,你会得到->

或->

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73482536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档