问题标签 [retry-logic]

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 投票
3 回答
10312 浏览

linear-programming - 使用指数退避有什么好处?

当代码在等待某个延迟时间不确定的条件时,看起来很多人选择使用指数退避,即等待N秒,检查条件是否满足;如果不是,请等待 2N 秒,检查条件等。与检查恒定/线性增加的时间跨度相比,这有什么好处?

0 投票
2 回答
181 浏览

c# - 构造函数可以抛出的代码的通用重试逻辑

从这里的问题跟进: 编写重试逻辑的最干净的方法?

在答案中,定义并使用了一个用于重试函数的泛型类:

您将如何实现通用重试,构造函数也可以抛出?

所以我不想重试:

我想以通用方式重试以下块:

0 投票
1 回答
766 浏览

c# - 带有重试逻辑的 SqlBulkCopy

我在将大量记录插入 Sql 服务器表时遇到问题。我通过使用 SqlBulkCopy 解决了这个问题。现在我能够很快地插入记录。

我有疑问,如果在插入记录时任何事务失败,我必须重试相同的操作 3 次。我们如何使用 SqlBulkCopy 实现重试逻辑?

0 投票
2 回答
457 浏览

ruby-on-rails - 在 Rspec 3.5 中,如何在使用救援时获得覆盖,并使用存根而不是 VCR 重试?

我试图在我附加的规范中覆盖以下代码部分。这个项目更喜欢在 VCR 上使用存根,并且外部 API 请求被阻止。有没有人对如何解决这个问题以获得所需的报道有任何想法?

我已将睡眠测试注释掉,因为它失败了。

代码

规格

覆盖报告 在此处输入图像描述

0 投票
1 回答
125 浏览

spring-integration - 当故障安全断路器打开时,请求存储在哪里?

故障安全断路器打开时请求存储在哪里?这是否意味着如果我在电路打开时重新启动我的应用程序,我会丢失所有应该重新尝试的请求?有没有办法检索这些消息。

0 投票
5 回答
31622 浏览

python - Python中的重试函数

前段时间,我需要retryR 中的一个函数来处理缓慢的服务器响应。该函数将具有以下行为:(尝试一个操作(函数或方法),如果失败,请稍等然后重试)x10

我想出了以下内容:

它运作良好。现在我在 Python3 中需要相同的,所以我尝试制作相同的代码:

但是当我运行它时,它会使我的内核崩溃。由于我是 Python 的初学者,我不确定导致崩溃的原因,以及是否/如何将函数作为参数传递给另一个函数。

你能帮帮我吗?

0 投票
1 回答
1016 浏览

c# - Azure EventHub PartitionedSender 的重试逻辑

我正在从 Azure 事件中心发送/接收数据。由于我要求消息必须由消费者按顺序处理,因此我决定使用 PartitionSender 并始终将事件发送到同一个分区。

https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-availability-and-consistency中的“一致性”下,它提到了 PartitionSender:

使用这种类型的配置,您必须记住,如果您要发送到的特定分区不可用,您将收到错误响应。作为比较点,如果您对单个分区没有关联性,事件中心服务会将您的事件发送到下一个可用分区。

因此,如果出现错误,我想实现尝试使用另一个分区发送的重试逻辑。(我有 4 个)

我不知道如何触发这个错误,所以我有点不确定我必须在代码中的哪个位置实现重试逻辑。

我的猜测是会抛出“Sender.SendAsync(data)”,我应该在这里实现重试逻辑

这是相关代码:

0 投票
1 回答
573 浏览

java - 如何在 Apache Camel 中结合 Redelivery policy 和 Hystrix 断路器?

我想用重试和 Hystrix 断路器实现 Apache Camel 路由。我的路线如下所示:

当在Hystrix 命令线程中调用骆驼 http4 端点时,CamelInternalProcessor不会调用RedeliveryErrorHandler并且没有重试。基本上堆栈跟踪尊重是:

有人知道为什么会这样吗?我可以在不拆分路线的情况下将两者结合起来吗?

0 投票
1 回答
1594 浏览

algorithm - 如何使用固定超时和尝试次数实现指数退避/延迟计算?

我见过的大多数退避/延迟算法都有固定的尝试次数或固定的超时,但不是两者兼而有之。

我想在 T 秒内准确地进行 M 次尝试,它们之间具有指数间隔,因此“T = delay(0) + delay(1) + ... + delay(M-1)”,其中“delay(N) = (e^N - 1) / e"(其中 N - 重试次数)。

如何计算上述描述中的“e”值,以便在整个超时 T 内进行准确的 M 次尝试(预先指定 M 和 T)?

0 投票
3 回答
1060 浏览

java - Mule Persistent ActiveMQ RedeliveryPolicy

我使用 Mule 作为 ESB 解决方案。我有一个队列,我从中获取消息并尝试向一直失败的服务发出 http 请求。

我在 ActiveMQ 上配置了 RedeliveryPolicy,如下所示:

5分钟后重试。然后 10 分钟 ,20,40,60,60,60 ... 大约 3 天

问题是,重试逻辑是非持久的。

可以说,消息重试了 2 天。而且我已经部署了新版本的mule应用程序,或者重新启动了服务器......在这种情况下,重试逻辑将从5分钟,10分钟重新开始......因为重试状态由客户端保存在RAM内存中。

让 RedeliveryPolicy持久化?在我将在 2 天后重新启动服务器后,它必须继续重试 1 天。

我认为一种解决方案可能是将 timeToLive 设置为 72 小时的消息。但即使在重新启动服务器之后。它不会从一开始就每隔一小时重试一次。它将从5分钟开始...