问题标签 [retrypolicy]
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.
circuit-breaker - Polly 断路器/重试以在网络中断后自动重新启动查询
我正在.NET 框架 4.5.2 中通过 Polly 实现断路器和重试模式。
我想看看我的理解是否正确。
问题一:如果网络中断,并且断路器已经达到了exceptionsAllowedBeforeBreaking数,进入open状态并等待durationOfBreak期间,电路会为新的请求打开,但是已经发送的会抛出异常?
问题 2:如果期望的行为是重试那些有异常的请求,而不是断路器抛出异常,那么除了断路器策略之外,还需要实施重试策略。我对此的理解是,问题 1 中的行为会发生,然后会尝试重试。
A. 如果网络中断或服务关闭,并且期望的行为是在网络恢复或服务再次启动时重试请求,则需要执行 RetryForever。有没有更好的方法来做到这一点?实际上会有很多阻塞,对吗?
在代码方面,我的策略目前定义为:
我的调用代码是这样完成的:
我观察到,如果我在断路器上运行所有重试所需的时间之后断开网络连接,则 CancellationToken 将设置为取消,并且所有请求此时都失败。如果在此之前网络已恢复,则重试请求。
java - Failsafe RetryPolicy - 从 supplyAsync 抛出异常
我正在实施重试策略。基本上我想要做的是在单独的线程上重试 POST 请求。我正在使用 jhalterman 的故障安全(https://github.com/jhalterman/failsafe#asynchronous-api-integration)这是我的代码
我不想在这里捕获 IOException。它由重试策略处理。目前重试不会发生,因为我在这里发现了异常。有没有办法从“supplyAsync”抛出异常,以便由重试策略处理?谢谢。谢谢
php - Aws SnsClient 中的日志重试异常
我们使用 AWS Sns 来发布/订阅。我在创建 SnsClient 期间发现我们可以使用 reties 来定义最大重试次数。例如,
如果使用了某种重试,有没有办法记录异常?我的意思是我想使用上面的代码控制重试策略。
azure - 重试请求以“内容长度不匹配”结尾
我的问题是这样的:
我有一个 Azure APIM,我创建了一个 API 并添加了后端重试策略,如下所示。
服务器第一次返回成功(状态码:200),当它启动重试时遇到以下情况(我也在重试成功,测试重试工作正常。)。
请帮助您的想法/经验。
c# - PrimaryThenSecondary LocationMode 是否检查主要的 RA-GRS 是否存在?
我正在使用 LocationMode 以重试从 blob 存储下载流。在某些情况下,帐户的 RA-GRS 可能不存在。我是否需要注意仅当存储帐户存在 RA-GRS 时才使用 LocationMode?
c# - 如何在单元测试中忽略 SQL 重试策略?
我继承了 Microsoft 在 GitHub 中SqlServerRetryingExecutionStrategy
的代码示例,称为MySQLServerRetryPolicy
类
我在 中的ShouldRetryOn
覆盖方法中添加了一个取消MySQLServerRetryPolicy
标记,因此我可以通过按 Ctrl+C 来终止 NET.Core 控制台。这是下面的代码片段:
这是我的使用方法MySQLServerRetryPolicy
:
builder
上面的变量是DbContextOptionsBuilder
.
但是,在单元测试中,没有输出表明 SQl 重试策略是否永远运行。
问题:如何忽略或跳过单元测试中的 SQL 重试策略?
rabbitmq - spring amqp 默认启用重试并根据指定异常阻止
在异常 A 的情况下:重试有限次,最后当重试次数用尽时,消息被写入死信队列
在异常 B 的情况下:简单地说,应该将消息写入死信队列
我正在尝试实现与 in 相同的用例,并且按照正确答案执行了所有步骤,但我仍然看到我的自定义异常被包装到 ListenerExecutionFailedException 中。我无法让它停止重试自定义异常。
我已按照以下答案中的步骤spring amqp 通过配置启用重试并根据指定的异常阻止它
和
Spring rabbit 重试传递被拒绝的消息.. 可以吗?
预期结果,如果 CustomDontRequeueException 被抛出,它不应该重新排队消息。
实际结果,无论它是什么异常,消息都会重新排队 n 次,然后丢弃到 DLQ。
go - 将重试策略变为可重用函数
我们的项目有一个简单的重试策略:
- 在第一个错误上,休眠 1 秒。
- 在第二个错误时,休眠 5 秒。
- 在第三个错误时,休眠 10 秒。
- 在第四个错误时,退出重试并返回错误。
以下是我们的重试策略:
有没有办法把上面的代码变成一个可重用的函数?
c# - Microsoft.Azure.ServiceBus - SubscriptionClient 忽略 RetryPolicy (RetryExponencial)
我正在尝试实施重试策略,但它一直被忽略。SubscriptionClient 中的属性是否覆盖了我在创建客户端时提供的属性?
这是我尝试过的代码:
所以这应该使它只重试 3 次,间隔最少 2 分钟。来自日志的结果:
如您所见,它重试了 8 次而不是 3 次,重试之间的时间间隔(这是我的主要问题)间隔为半秒。
为了确保这不是我的重试策略,我尝试了这个:
结果完全一样,所以我确信它被忽略了。任何帮助将非常感激。
保持良好的工作。
c# - 使用 Polly 进行重试策略时递归执行不同的方法
我是 Polly 构建重试策略的新手,我注意到的是,如果 Polly 遇到特定异常,它将一遍又一遍地执行相同的方法。但是,Polly 是否可以递归地使用不同的方法重试?这是我当前工作流程的一个示例:
- 我有一个项目列表作为批处理操作写入数据库,但我不知道列表的总数据大小。
- 我的数据库写入操作会有一定大小的限制,比如说它的最大大小为 2 MB。
- 假设我的输入列表包含 5,000 项,那么当它超过我的数据库写入操作限制时,会引发异常。我想做的是将 5000 个项目分成 2 个子集,每个子集有 2,500 个项目。然后尝试再次使用这两个子集编写...
- 如果我的 2,500 个项目的两个子集仍然超出限制,我会将 2500 个分成两半,每个子集 1,250 个项目,然后再次尝试相同的操作。
所以基本上我的重试策略将基于递归方式执行,当遇到异常时,拆分数据集并重试,然后继续......但是,使用Polly我找不到递归调用我的执行方法的方法......