gpt4 book ai didi

javascript - 杀死 nestjs - node.js 进程丢失 redis 连接(微服务)

转载 作者:IT王子 更新时间:2023-10-29 06:12:30 28 4
gpt4 key购买 nike

app.connectMicroservice({
transport: Transport.REDIS,
options: {
url: redis://ip:6379,
retryAttempts: 5,
retryDelay: 5000,
}
});

这就是我在 nestjs 中连接到微服务的方式,在 Windows 中简单而基本。

在此过程中,与 Redis 的连接可能会消失,但我无法捕捉到它。

这意味着如果 redis 连接恢复,应用程序将仍然存在并且不会发生任何事情,我将无法订阅新事件。

我该如何处理它或添加超时或捕获类似的问题。目前的修复只是手动重启服务。在这种情况下,我想用 exit(1) 终止进程

最佳答案

您可以定期发出健康检查消息,然后在连接关闭时开始您的恢复过程:

在模块的导入中注册您的 redis 客户端:

imports: [ClientsModule.register([
{ name: 'REDIS_CLIENT', transport: Transport.REDIS },
])],

然后,在您的 onModuleInit 中,连接你的客户端并定期开始健康检查:

constructor(@Inject('REDIS_CLIENT') private readonly client: ClientProxy) {
}

async onModuleInit() {
await this.client.connect();
setInterval(async () => {
try {
await this.client.emit('healthcheck', 'healthcheck').toPromise();
} catch (e) {
// Sending the message has failed, start recovery
console.error(e);
process.exit(1);
}
}, 1000);
}

关于javascript - 杀死 nestjs - node.js 进程丢失 redis 连接(微服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56242848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com