问题标签 [polly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用连接到重试策略的特定超时
我正在通过以下方式创建重试策略:
var policy = Policy.Handle<Exception>().WaitAndRetryAsync...
如何为上面的重试策略设置超时?Policy.TimeoutAsync
返回 a TimeoutPolicy
,因此我无法做类似的事情
var policy = Policy.TimeoutAsync(30).Handle<Exception>().WaitAndRetryAsync...
.
超时是否成为我所有重试策略的通用设置?
c# - Polly ExecuteAndCaptureAsync 在断路器打开时不抛出异常
我有以下代码:
当断路器处于打开状态时,结果简单地为空,不会抛出异常。如果电路打开,它不应该抛出异常吗?
c# - Polly 超时政策说明
我正在尝试使超时策略正常工作。我在集成 api 时有以下要求。
- 创建一个 http 请求来调用 endpoint1 并传递 transactionID 并捕获结果
- 如果 http 请求在 20 秒内没有响应,则发送具有相同 transactionID 的取消请求并捕获结果
对于这个任务,我想使用 Polly,它在我看来是一个很棒的组件,可以帮助处理瞬态故障。但是,由于我对这项技术非常陌生,我只想确定我是否正确实施。
首先,我已经像这样用 Polly 创建了一个超时策略
然后之后我准备执行该政策
我从文档中得到的是,如果timeoutPolicy.ExecuteAndCaptureAsync
委托内部发生超时,Polly 会自动调用onTimeout
委托。正确的?
但是我的问题是:
- 如果在执行委托内部发生异常会发生什么?我应该将那个 polly 结构包装在 try catch 中吗?
- 当我分析策略结果时,我如何了解是否发生超时?
c# - 使用 Polly 时在 VS 调试器中报告异常用户未处理
我在调用 Pittney Bowes Geocoder 服务时使用 Polly 捕获异常。我正在使用引发 MessageProcessingException 的 g1client 库。如果抛出此异常,我已将调用包装在 Polly 网络策略中以重试调用最多 3 次,但 Visual Studio 坚持认为异常是“用户未处理”我需要修改什么才能处理此异常? 我正在使用 Visual Studio 2017 社区版和 C# 4.6.1。
错误信息是:
我还想追查为什么我会收到这个错误,所以任何帮助调试也很好。我只有在第一次使用大量请求调用服务时才得到它。在这种情况下,我发送了 1000 个地址进行处理。下一次运行请求将在一秒钟内处理,但第一次它不起作用。
c# - 无论实际响应如何,Polly 重试策略结果始终成功
我正在尝试利用Polly处理任意结果条件的能力https://github.com/App-vNext/Polly/#step-1b-optionally-specify-return-results-you-want-to-处理。
在我的测试用例中,我使用RestSharp发出 HTTP 请求。这是我的示例代码:
对https://httpbin.org/anything的调用会回显一堆东西——确切的内容是不相关的。正如您在谓词中看到的那样,我正在结果正文中寻找字符串“bla”。
问题是policy.Outcome
总是成功的 ( policy.Outcome == OutcomeType.Successful
) 但“bla”不在结果正文中。
c# - 在将策略定义与执行分开时理解 Polly 策略的语义
对于Polly,我希望在两个不同的语句中定义我的策略和执行该策略,如下所示:
我想这样做,以便更好地重用我的重试策略,例如用于依赖注入。
我试图了解在以这种方式拆分策略和执行时是否有任何考虑因素,例如,如果有任何“状态”(因为没有更好的术语)可能不会在policy
对象中携带从策略定义到执行.
沿着这些思路,我注意到当我ExecuteAndCapture()
以上述方式使用 Polly 时,某些属性(与捕获最终异常/结果相关的属性,与 相关联ExecuteAndCapture()
)没有显示在policy
对象上。根据文档(此处和此处),在完成以下政策后:
...你应该回来:
这确实发生了,然后ExecuteAndCapture()
在与策略定义相同的语句中。但是,当将策略定义与执行分开时,这些属性不可用。我天真地假设它们会出现在现有policy
对象上,但它们不会:
看来我需要创建一个新的变量赋值才能访问这些属性:
这里有什么顾虑吗?
c# - Polly 策略应该是单例吗?
我有一个IGetHamburgers
调用外部 API 的查询。我已将IGetHamburgers
DI 容器中的实现注册为单例。我使用 Polly 作为断路器,如果两个请求失败,电路将打开。
我的目标是所有对 Hamburger api 的调用都应该通过同一个断路器,如果 GetHamburgers 失败,那么所有其他调用也应该失败。
我应该如何使用我的保单?我应该将我的政策注册为这样的字段:
或者
我猜第一个选项是正确的方法,因为那时 Policy 对象将始终相同,并且可以跟踪异常计数和类似的东西。我的问题是,第二个选项也可以吗?我在 Pollys Github 上找到了很多示例/示例,但我找不到任何将 Polly 与 DI 以及类似的东西一起使用的“真实世界”示例?
circuit-breaker - Polly 和包装策略
我是 Polly 的新手,正在尝试创建一个具有回退和超时策略的断路器。我的设置如下所示,其中所有策略都是“全局”的,因此它们在调用之间保持状态:
后来我使用 _policy 来调用外部 webapi:
我想要实现的是如果断路器策略与超时策略相结合,则激活回退响应......使用当前设置,它在第一轮工作,即在该回退启动后 20 秒内发生 5 个错误......我等待 30 sek 和现在只有 1 次超过 1500 毫秒的后备再次启动(?),但这还为时过早,因为断路器策略应该在 20 秒跨度内进行 5 次尝试,然后回退开始......如果有人能指出我,我会很高兴在正确的方向如何解决这个问题。
谢谢!
c# - 通过 Lambda Func 发出 Http 请求
我正在尝试通过一个管理断路器投票策略的辅助函数发出 httpclient 请求。
我试着这样称呼它var response = clientFactory.MakeRequest(() => client.GetAsync("/"));
在客户端工厂内部,我定义了断路器策略,我正在尝试使用该策略执行上面的 lambda,如下所示
作为一个整体,我对 Lambda 相当陌生,将它作为函数传递会变得更加混乱。如何配置函数和第一行代码来执行客户端并返回HttpResponseMessage?我不认为Task<HttpResponseMessage>
或Func<HttpResponseMessage>
不正确