当一个微服务出现故障时如何处理

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

产品微服务出现故障,不返回值的情况如何处理?

async getStats(productId: string) {
    const existedProduct = await firstValueFrom(
        this.productClient.send('get_product', { productId })
    );

    if (!existedProduct) {
        throw new NotFoundException('Продукт не найден');
    }

    const avgRatingData = await this.prismaService.review.aggregate({
        where: { productId },
        _avg: {
            rate: true
        }
    });

    const reviewsCount = await this.prismaService.review.count({
        where: { productId }
    });

    const avgRating = avgRatingData._avg.rate ? Number(avgRatingData._avg.rate.toFixed(2)) : 0;

    return {
        stats: {
            productId,
            avgRating,
            reviewsCount
        }
    };
}

问题是如果产品服务失败,这段代码会等待响应,直到再次开启

const existedProduct = await firstValueFrom(
    this.productClient.send('get_product', { productId })
);
rabbitmq nestjs microservices nestjs-microservice
1个回答
0
投票

我决定如下:

const existedProduct = await firstValueFrom(
    this.productClient.send('get_product', { productId }).pipe(timeout(1000))
).catch(error => {
    console.log(error.message);
    return null;
});
© www.soinside.com 2019 - 2024. All rights reserved.