然后在Startup.cs中的ConfigureServices方法注册该中间件
using Ocelot.Provider.Polly; public void ConfigureServices(IServiceCollection services) { …… services.AddOcelot() .AddPolly(); …… }在ReRoutes中添加一组路由
{ "DownstreamPathTemplate": "/api/ocelot/{postId}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 8001 } ], "UpstreamPathTemplate": "/ocelot/qos/{postId}", "UpstreamHttpMethod": [ "Get" ], "Priority": 2, "QoSOptions": { "ExceptionsAllowedBeforeBreaking": 3, "DurationOfBreak": 3000, "TimeoutValue": 5000 } }为了看出熔断效果,我将8001端口的下游服务停止了,然后运行OcelotDemo项目
当第一次向网关发出请求时,得到500的状态码
连续3次请求过后,就会得到503的状态码,证明Ocelot已经产生熔断
总结在这篇文章中就跟大家介绍了Ocelot的两个基础功能,在路由中进行配置即可使用,不需要依赖于第三方的服务。当然在我实践的过程中产生的一个疑问暂时还没得到答案,如果有知道原因的朋友也可以给我留言,感激不尽。
结合前面的几篇文章,大家在设计项目API网关的时候就可以综合地考虑到底哪些功能应该配置使用,如何适当地建立路由表。例外,我在这几个案例中为了突出要介绍的功能,基本上都是一组路由单独配置一个功能,而在实际项目中通常都是需要在一组路由当中同时配置多个功能的,希望大家在实际项目中能够灵活运用。今天就先跟大家介绍到这里,希望大家能持续关注我们。