问题标签 [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.

0 投票
1 回答
560 浏览

polly - Polly 不执行重试操作

我创建了一个简单的场景来测试 Polly 我可能完全错了。如果它重试,重试变量应该是 3。

请看看我做了什么。谢谢。

重试变量始终为零。又怎样 ?。

0 投票
1 回答
117 浏览

polly - POLLY Nuget 包 WaitAndRetryAsync 方法

我正在使用 Polly Nuget 包在我的项目中将其重试功能用于 webAPI/WCF 调用。我只是想知道我们可以为 POLLY WaitAndRetryAsync 方法提供的最大等待时间是多少?

谢谢阿米尔塔拉杰

0 投票
0 回答
2610 浏览

c# - 在 HttpRequestException 之后使用 Polly 重试

我正在调用外部 API,并且我想重试某些特定响应(例如BadGateway、Unauthorized、ServiceUnavailable)。第二次重试后,它说

任务取消(“任务已取消。”)为什么?

我正在尝试使用Polly以下代码:

0 投票
0 回答
486 浏览

c# - polly 在给定时间段内重试策略

我有以下代码:

polly 有什么解决方案可以在一段时间内使用重试选项吗?有任何想法吗?谢谢

0 投票
1 回答
1386 浏览

c# - 如何使用 Polly 对任意“失败”条件进行重试和瞬态故障处理

我想使用Polly不是检查明显的“失败”,而是检查其他情况。具体来说,我想进行一次(异步)调用,例如httpClient.GetAsync(...),出于这个问题的目的,我知道它会成功 - 也就是说,在执行以下操作之后:

response.IsSuccessStatusCodetrue

让我们假设然后我做标准:

var content = await response.Content.ReadAsStringAsync();

content == { "Name":"Tom", "Age", 30", "ErrorCode":"12345" }

ErrorCode我希望我的策略逻辑根据响应部分的内容(或不存在或存在)来执行。所以这只是我打的一个电话。

我怎样才能用波莉做到这一点?

0 投票
1 回答
1062 浏览

c# - 我的应用程序不会重试连接。为什么?

我正在尝试开始使用 Polly。请参阅下面的我的 Startup 课程:

我正在使用这样的 HTTPClient:

GetValue() 尝试访问 Web API 一次,然后失败。为什么它不尝试按照配置多次访问 Web API?

0 投票
2 回答
1878 浏览

c# - 使用 Polly 库实现重试逻辑,不重复处理异常

如何使用 polly 实现重试逻辑,以延迟重试执行函数,但不处理异常。该场景是重复获取状态信息但没有预期的异常。

0 投票
1 回答
365 浏览

xamarin.android - 达到重试次数后 Polly 显示对话框

我正在使用 Polly 重试 Web 服务调用,以防调用因 WebException 而失败,因为我想确保在继续之前正确执行该方法。但是,有时即使重试几次,Web 方法仍然会抛出异常,我不想永远重试。我可以使用 Polly 显示一些确认对话框,例如“达到最大重试次数!确保连接已启用并按重试。” 然后重试计数器应重置为初始值并重新开始。我可以仅使用 Polly 来实现这一点,还是应该编写自己的逻辑?想法?

0 投票
2 回答
2379 浏览

rabbitmq - RabbitMQ - 处理不可靠的服务

我有一个服务 AAA,每分钟向 RabbitMQ 交换发布 10 到 5 万条消息。一个 .NET Core 服务 BBB 订阅一个队列(所有消息都被路由到该队列),并为每条消息通过 Internet 调用另一个 HTTP 服务 CCC。问题是 CCC 非常不可靠,一天几次它会完全关闭一两分钟,每周至少一次它会死掉一个小时。

我无法控制 AAA 或 CCC。如何使用 RabbitMQ 路由功能可靠地传递所有已处理的消息?

0 投票
0 回答
369 浏览

c# - 将 Polly 与 TPL 数据流结合使用

数据处理管道和瞬态故障处理似乎是齐头并进的,所以我很想看看我是否可以得到两个最好的库——分别是TPL DataflowPolly——一起玩得很好。

作为起点,我想将故障处理策略应用于ActionBlock. 理想情况下,我想将它封装在一个带有这样签名的块创建方法中:

简单地policy.Execute从内部进行操作就很容易了ActionBlock,但我有这两个要求:

  1. 在重试的情况下,我不希望重试一个项目优先于其他排队的项目。换句话说,当你失败时,你会排在队伍的后面。
  2. 更重要的是,如果在重试之前有等待期,我不希望它阻止新项目进入。如果ExecutionDataflowBlockOptions.MaxDegreeOfParallelism设置了,我不希望等待重试的项目针对该最大值“计数”。

为了满足这些要求,我认为我需要一个应用ActionBlock了用户提供的“内部ExecutionDataflowBlockOptions”块,以及一些将项目发布到内部块并在外部应用任何等待和重试逻辑(或任何策略规定)的“外部”内部块的上下文。这是我的第一次尝试:

为了测试它,我创建了一个带有等待重试策略和一个虚拟方法的块,该方法在前 3 次调用(应用程序范围)时抛出异常。然后我给它一些数据:

我希望 a、b 和 c 失败并排在最后。但我观察到他们按以下顺序击中内部块的动作:

从本质上讲,我没有满足自己的要求,而且很容易看出原因:在当前项目的所有重试发生之前,外部块不会让新项目进入。一个简单但看似 hackish 的解决方案是为MaxDegreeOfParallelism外部块添加一个大值:

通过这种更改,我观察到新项目确实会在重试之前进入,但我也引发了一些混乱。进入内部块已经成为随机的,尽管前 3 项总是在最后:

所以这个稍微好一点。但理想情况下,我希望看到订单保留:

这就是我卡住的地方,对此进行推理我想知道在这些限制下是否有可能,特别是内部CreatePollyBlock可以执行策略但不能定义它。例如,如果这些内部可以提供重试 lambda,我认为这会给我更多的选择。但这是政策定义的一部分,根据这个设计,我不能这样做。

提前感谢您的帮助。