NET Core Web API中使用 Polly 构建弹性容错的微服务 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 (5)

在 Startup.cs 文件中的 Startup Constructor 中配置 Serilog,如下代码所示

public Startup(IConfiguration configuration) { Configuration = configuration; Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration) .CreateLogger(); }

以上配置会生成日志到路径{Project Path}\Serilogs\AppLogs.log下的文件

如果您想进一步详细了解如何将 Serilog 日志添加到项目中,那么您可以在此处查看我的详细文章

现在我们已经添加了所需的项目并配置了项目,让我们运行并检查项目。由于此订单服务依赖于客户服务,因此我们需要确保在测试时两个项目都已启动并正在运行。为了从 Visual Studio 一起启动这两个项目,我们将对启动项目进行更改。

右键单击解决方案资源管理器中的解决方案文件,然后选择将加载属性屏幕的属性,您可以通过选择多个启动项目选项来配置以同时启动两个项目,如下所示

NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

现在,当您从 Visual Studio 运行项目时,订单和客户服务项目都将启动。

运行并测试订单服务

从 Visual Studio 构建和运行应用程序后,您应该会从 swagger (OpenAPI) 看到以下屏幕。

NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

在执行获取操作 /api/Order/GetOrderByCustomer/2 时,您应该从操作方法中获得以下响应。

NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

现在让我们看看当客户服务不可用时会发生什么,即订单服务没有问题但客户服务没有启动和运行。为了模拟这种情况,我刚刚启动了 Order 服务,但没有启动客户服务,因此客户服务没有启动和运行。

NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

正如我们在上面看到的,当客户服务没有启动并运行时,订单服务也会开始抛出错误。从 Serilog 中,您将能够看到订单服务向客户服务发出请求,该请求返回了异常,因此在级联效果中,订单服务也返回了 500

让我们探讨如何使用 ASP.NET Core 中的 Polly 策略来避免这种行为

在 ASP.NET Core 订单服务中配置 Polly 的策略

要在 ASP.NET Core 中配置 Polly 的策略,您需要在项目中安装 Polly 包。您可以通过在包管理器控制台窗口中运行以下命令来添加 Polly 包

Install-Package Polly

现在我们在订单服务项目中安装了 Polly 包文件,让我们看看如何在我们的 ASP.NET Core Web API(订单服务)项目中使用 Polly 的策略来使我们的订单服务容错,尽管客户服务没有运行或失败。

声明 Polly 策略的方法不止一种,即使用注册表或通过 Startup 添加它们。但是,为了在这篇介绍文章中保持简单,我们将直接在构造函数的控制器类中创建 Polly 策略。

重试策略

根据 name 的定义,此策略建议您需要在第一次尝试失败的情况下重试请求。现在,这些重试必须是固定的次数,因为这种重试业务不可能永远持续下去。此重试策略可让您配置要进行的重试次数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxzzp.html