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

0 投票
1 回答
760 浏览

azure - 如何在使用 Azure 服务总线队列功能时使用更新的信息重新排队消息?

在使用 Azure Service Bus Queue 函数时,我们知道每当出现异常时,azure 函数都会执行默认的重试策略(最大计数 = 10),我们想做的是让我们的消息带有一个名为retryCount的属性,所以当异常产生时,我们会增加retryCount += 1,并将当前异常添加到我们的消息中,然后当函数执行重试时,我们可以知道这是它与 x 记录一起出现的第 x 次例外。我们知道Message对象有一个名为deliveryCount的只读属性,但是,我们无法绑定我们的附加信息或找出最后一次传递失败的原因来自消息对象。

然而,在我们尝试实现我们的想法之后,我们发现每当函数执行重试时,它总是从队列中重新加载初始消息,而不是我们更新的消息。有没有办法让它重试更新的消息而无需强制将更新的消息重新发送回当前队列?

另外,我们如何自定义当前的重试逻辑,例如,将最大重试次数从 10 减少到 1,并使用 Polly 处理函数内部的一些场景?

0 投票
1 回答
1838 浏览

java - 在 Spring Boot Java 应用程序中调用自定义 Rest 模板

我有一个在 2.1.7 版上运行的 Spring Boot 应用程序。我正在尝试使用 Rest Template Builder 实现自定义休息模板,以设置连接和读取超时。我知道我需要使用 Rest Template Builder,因为我在 2.1.7 上运行。我的自定义休息模板的代码如下所示。我需要帮助在我的代码的其他区域调用这个休息模板,因为这个休息模板将被我的应用程序的各个组件使用,但我需要帮助这样做。对此的任何建议将不胜感激。谢谢!

0 投票
2 回答
1170 浏览

java - Java resilience4j Retry policy goes infinite after 2 retries

I am using the resilience4j Retry policy to call the HttpGet request and for testing purposes,
I have set retryOnResult to retry when HttpGet request returns 200 status code.
It successfully retries when maxAttempts is set to 2.

For maxAttempts > 2 application goes in infinite state.

pom.xml:

0 投票
2 回答
274 浏览

java - Volley 请求重试策略不考虑超时

我在DefaultRetryPolicy中将 1500 设置为initialTimeoutMs ,如下所示,但它不考虑超时:

我断开了设备上的 WiFi 以测试它是否超时,我在Logcat中看到了这些时间:

我预计在 1.5 秒后捕获 onResponse 或 onError 花了 20 多秒!!!

0 投票
0 回答
320 浏览

amazon-web-services - HTTP订阅的SNS投递策略最大限制

SNS 文档指定我们可以为 SNS 的 HTTP/S 订阅配置传递策略:https ://docs.aws.amazon.com/sns/latest/dg/sns-message-delivery-retries.html 。鉴于最大限制number of retries是 100 并且maxDelayTarget是 3600 以下配置是最大可能限制吗?

这会配置以 1 小时为间隔的重试,总共增加 4 天(100 小时)。SNS 是否有 4 天的保留期?亚马逊 IPN状态

如果您发送另一个响应,Amazon SNS 会在 14 天内每小时重试一次。

是否可以将限制增加超过 4 天?

使用 SQS 模拟 SNS 中的消息持久性的旧答案提到了一个小时的保留期。这有改变吗?

0 投票
0 回答
173 浏览

javascript - 带有通知器的 RxJS `repeatWhen` 快速重复

我正在尝试使用 RxJSrepeatWhen运算符进行网络重试。这个想法是,当调度程序收到一个新请求时,我直接尝试该请求,如果它导致网络故障结果,我将它添加到一个池中,以便稍后重试。所以我的调度程序的入口点是队列函数,它完成这样的工作:

并且this.notifierSubject用作工人的通知者的。所以worker本身是这样的:

并且通知器跟踪数组中的所有未完成的请求,如下所示:

据我所知,如果工人的一个周期没有完成,那么 repeatWhen 无关紧要。例如,如果我删除部分:

从工人那里,在工人第一次尝试(一个空周期)时,Observable 没有完成并且 repeatWhen 不会做任何事情。但另一方面,正如你所见,我已经评论过// subscriber.complete();存在工作但重复发生的情况。问题的最糟糕的部分是许多不同的工作实例并行运行,这会产生许多重复的请求。

我在这个问题上花了很多时间,但没有任何线索可以追踪。

0 投票
1 回答
308 浏览

c# - 尝试失败后使用 Polly ExecuteAsync 时是否可以更改客户端的 BaseAddress 或客户端?

我使用 .net core 3.1 和 Polly 7.2.0 在我的解决方案中实现了 Polly。我为 IServiceCollection 创建了扩展,在我的启动文件中,我调用扩展来配置和添加客户端,以及创建策略并注册它。

在我的 ExternalClient 类中,我使用 IHttpClientFactory 来使用我的客户端,并使用 IAsyncPolicy 策略来使用我在 Startup 上创建和设置的策略来包装我的调用。

启动.cs

ServiceCollectionExtension.cs

外部客户端

该策略的实施工作正常,下一步是检查是否有一种方法可以为我的客户端添加故障转移 URL。我已经检查了Polly 的文档,并且也看到了使用 WebClient 的这种方法,但是如果策略和实现在同一个地方,这将起作用。我相信,如果我在一个方法中发生 http 客户端调用,我可以用 ExecuteAsync 包装对它的调用,然后提供不同的客户端,那么我相信这是有可能做到的,但我正在寻找一个更优雅的解决方案,可能存在但我不知道。

0 投票
1 回答
103 浏览

asp.net-web-api - Web Api 上的 RetryPolicy 导致超时

我有一个 Web Api,它调用另一个 Web api 调用来获取一些信息。为了使应用程序更具弹性,我按照以下步骤实现了 HttpTransientErrorDetectionStrategy:https ://alexandrebrisebois.wordpress.com/2013/02/21/defining-an-http-transient-error-detection-strategy-for-休息电话/

之后,我使用如下代码调用另一个 Web 应用程序:

_httpClient.GetAsync 调用卡住了,我不知道为什么。如果我删除 _retryPolicy,直接使用 _httpClient.GetAsync,它会在几秒钟内返回。

我在控制台应用程序上有类似的代码,用于调用相同的 Web 应用程序,并且工作正常,所以这似乎特定于我在我的 Web API 中使用它的方式。这旨在成为 Azure 上的应用程序,但当我在本地调试时也会发生这种情况。有人知道为什么会卡住吗?我该如何调试呢?

谢谢!

0 投票
1 回答
464 浏览

c# - Polly Retry 总是抛出 System.AggregateException 而不是自定义异常

正如标题所说,我使用 Polly 创建了一个重试机制。问题是我总是得到一个 System.AggregateException 而不是我自己的自定义异常。我将在此处添加代码。

这是我创建的 polly 静态类:

这是重试 polly 的实际调用:

我的期望是,如果我抛出 MyException,polly 也会将 MyException 抛出给调用者方法。相反,抛出的异常是 System.AggregateException。

我在这里做错了什么?谢谢

编辑 1:经过更多调试后,AggregateException 似乎具有内部异常 MyException。这是预期的行为还是我做错了什么?

0 投票
0 回答
367 浏览

java - 如何使 Failsafe RetryPolicy 处理 ConstraintVoilationException

我试图通过读取来自每次通过单独线程触发的活动 mq 的消息来在表上插入和更新。有时插入查询会因为 ConstraintVoilationException 而失败。我想重试,因为代码会将重试尝试视为更新,并且不会出现 ConstraintVoilationException。

但是,RetryPolicy 并未处理此异常。我该如何定制它?

故障保护神器版本:net.jodah (2.3.3)

这是代码示例,其中“T”是我的实体的类名。

我也用 DataIntegrityVoilationException 和 SQLIntegrityConstraintVoilationException 尝试了这段代码,但代码在失败后不会重试。