问题标签 [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.
linear-programming - 使用指数退避有什么好处?
当代码在等待某个延迟时间不确定的条件时,看起来很多人选择使用指数退避,即等待N秒,检查条件是否满足;如果不是,请等待 2N 秒,检查条件等。与检查恒定/线性增加的时间跨度相比,这有什么好处?
c# - 带有重试逻辑的 SqlBulkCopy
我在将大量记录插入 Sql 服务器表时遇到问题。我通过使用 SqlBulkCopy 解决了这个问题。现在我能够很快地插入记录。
我有疑问,如果在插入记录时任何事务失败,我必须重试相同的操作 3 次。我们如何使用 SqlBulkCopy 实现重试逻辑?
spring-integration - 当故障安全断路器打开时,请求存储在哪里?
故障安全断路器打开时请求存储在哪里?这是否意味着如果我在电路打开时重新启动我的应用程序,我会丢失所有应该重新尝试的请求?有没有办法检索这些消息。
python - Python中的重试函数
前段时间,我需要retry
R 中的一个函数来处理缓慢的服务器响应。该函数将具有以下行为:(尝试一个操作(函数或方法),如果失败,请稍等然后重试)x10
我想出了以下内容:
它运作良好。现在我在 Python3 中需要相同的,所以我尝试制作相同的代码:
但是当我运行它时,它会使我的内核崩溃。由于我是 Python 的初学者,我不确定导致崩溃的原因,以及是否/如何将函数作为参数传递给另一个函数。
你能帮帮我吗?
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)”,我应该在这里实现重试逻辑
这是相关代码:
java - 如何在 Apache Camel 中结合 Redelivery policy 和 Hystrix 断路器?
我想用重试和 Hystrix 断路器实现 Apache Camel 路由。我的路线如下所示:
当在Hystrix 命令线程中调用骆驼 http4 端点时,CamelInternalProcessor
不会调用RedeliveryErrorHandler
并且没有重试。基本上堆栈跟踪尊重是:
有人知道为什么会这样吗?我可以在不拆分路线的情况下将两者结合起来吗?
algorithm - 如何使用固定超时和尝试次数实现指数退避/延迟计算?
我见过的大多数退避/延迟算法都有固定的尝试次数或固定的超时,但不是两者兼而有之。
我想在 T 秒内准确地进行 M 次尝试,它们之间具有指数间隔,因此“T = delay(0) + delay(1) + ... + delay(M-1)”,其中“delay(N) = (e^N - 1) / e"(其中 N - 重试次数)。
如何计算上述描述中的“e”值,以便在整个超时 T 内进行准确的 M 次尝试(预先指定 M 和 T)?
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分钟开始...