首页 > 解决方案 > Polly电路关闭时如何实现自定义方法

问题描述

我有返回的方法,IAsyncPolicy<HttpResponseMessage>它有 2 个或更多策略以及CircuitBreaker我的 DI 的一部分。

现在在我的实现类中,我添加了一个额外的 fallbackPolicy 来处理BrokenCircuitException和包装它IAsyncPolicy<HttpResponseMessage>(AsyncPolicy)

现在我在方法中完成了我的自定义方法实现DoWork(),太棒了!!!感谢FallbackAsync我发现BrokenCircuitException异常的政策,这意味着当电路打开时。

var fallbackPolicy = Policy<HttpResponseMessage>
                .Handle<BrokenCircuitException>()
                .FallbackAsync(async (cancellationToken) => await DoWork()
                .ConfigureAwait(false));

            var policyWrap = fallbackPolicy.WrapAsync(AsyncPolicy);

            // Send message to service
            var response = await policyWrap.ExecuteAsync(() => HttpClient.PostAsync(...

现在的问题是,我们是否有任何策略或方法可以知道电路何时关闭并且我可以编写自己的方法实现?

在我的共享策略中,我也有 CircuitBreaker`,我在 DI 区域中写的有以下签名,但我不能在这里编写我的自定义方法实现。

onReset: () =>
                    {
                        Trace.TraceInformation("Web API Close");
                    },

标签: c#fallbackpollycircuit-breaker

解决方案


推荐阅读