问题标签 [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.
database - 数据创建响应超时的最佳重试策略
在这种情况下,最好的重试策略是什么:
Database
成功创建数据条目,但响应时间过长Application
。所以要执行这项工作,Application
重试创建,当然会Database
返回一个“已经存在”的错误。所以最后从Application
他的角度来看,好像是创作失败了,其实是成功了。更糟糕的是,如果这是在一系列步骤的中间,那么就无法Application
决定是否触发前面步骤的回滚。
增加超时时间Application
不是一个可接受的解决方案,因为 IP 网络永远不可能 100% 可靠,而且响应在网络中丢失的可能性总是很小。
在创建之前添加对存在的检查<data>
可能会起作用。但这只是在考虑并发性的情况下。在我的情况下,可以有多个客户Database
,我不确定竞争条件的可能性。
java - CompletionService 中的重试策略
我需要为通过 ExecutorCompletionService 调用 API 配置重试策略。
示例代码:
为调用 API 时抛出的 TimeoutException 实施重试策略的最佳方法是什么?
c# - MassTransit 中的多次重试策略
我在我的应用程序中使用 MassTransit,并希望配置多个重试策略。文档没有提到他们将如何交互,所以我希望有人能澄清一下。
我想要做的是为一些等待可用资源的消费者实施二次重试。如果资源不可用,我想抛出一个特定的异常并稍后重试。
为此,我有这样的事情。
我还想要一个通用的重试策略来处理所有失败,除非我需要重试。
MassTransit 可以处理这个问题吗?我应该将这些重试策略放置在哪个级别以获得最佳结果(总线、端点或消费者)?
谢谢
error-handling - 如何处理 SMTP 超时
我正在使用用 C# 编写的客户端应用程序向公司交换服务器发送批量电子邮件。
客户端应用程序超时(而不是服务器)可能会发生,并且确实发生了。由于无法知道服务器是否完成了请求,这种情况下如何处理重试?
没有涉及可用于避免重复的 ID。设置长超时甚至无限超时都不是一个好策略。
我正在使用指数退避算法进行重试。在这种情况下,它应该只发送一个副本,因为下次它会等待更长的时间。
我认为没有子弹教授解决方案。无论如何,由于它是第一个此类项目,我需要检查是否有人有我想念的解决方案。
更新:交易所正在做中继。我正在使用 SmtpClient 发送电子邮件。问题是服务器可以发送 250 Ok 消息,但接收方始终没有收到,然后重试。这是我在这篇文章中试图解决的唯一问题。
在 Rest 服务中,推荐的方法是使用并发错误。如果客户端发布某些内容并获得“409 - 冲突”状态,则表示该消息已存储在服务器上。但是为了让这种情况发生在那里,它是由客户端创建的消息的密钥,并且是消息的一部分。SMTP 似乎没有可以防止这种情况的机制。
c# - 使用多种方法重试逻辑
我正在客户端实现 WCF 服务的重试逻辑。我在 WCF 服务中有多个操作,具有各种输入参数和返回类型。
我创建了一个包装器,可以使用 Action 委托调用这些没有返回类型(void)的特定方法。有什么方法可以调用具有各种输入参数和返回类型的方法。
或者是否有任何逻辑可以在可以处理多个 WCF 服务的客户端上实现重试功能。
我使用上述方法并拨打电话
我不断收到错误“无法在匿名委托中使用 ref 或 out 参数”
c# - 如何配置 WebJob ServiceBusTrigger 重试策略
编辑:我将接受与 Azure 配置相关的更改作为此问题的答案。
我正在尝试设置重试策略,以防止在第 3 方服务暂时不可用时立即重试消息。
目前,该作业会立即重试多次,并且由于 3rd 方服务的临时中断而每次都失败。
如何为这些消息设置重试延迟?
我有以下主要代码:
我有一个可以正确记录错误的 ErrorMonitor 设置:
我的消息处理程序如下所示:
transactionscope - 抛出异常时,Rebs 处理程序不会重试
我将 rebus 3.1.5 与 rebus.rabbitmq 3.0.0 和 rabbitmq.client 4.1.1 一起使用。我已配置为使用简单的重试策略,最多 2 次传递尝试。如果抛出异常,我想重试该消息。我不使用事务范围。但是当抛出异常时,我不会再次重新传递消息(它甚至不在错误队列中)
如果这是不可能的,并且如果我需要使用 HandleMessagesInsideTransactionScope 配置 rebus,它是否会锁定我的数据库,直到我完成处理程序工作?
非常感谢!
编辑:这是处理程序的样子:
这就是总线的配置方式:
java - 使用 RetryPolicy 和 CircuitBreaker 进行故障保护会引发 CircuitBreakerOpenException
我正在尝试将重试策略与具有 Failsafe 的 CircuitBreaker 模式相结合,但是当尝试在电路打开并中断时出现 CircuitBreakerOpenException 异常。
https://github.com/jhalterman/failsafe
问题是通过将重试延迟设置为小于电路的关闭时间而产生的。
如何控制此异常,使重试策略不中断?我想这样做是因为我可以让多个同时实例向休息服务发起请求,并且重试不会中断。
我的代码:
我的结果:
grails-2.2 - Grails 插件 cxf-client-1.5.4 故障转移
从 Maven Repository 下载的 cxf-client-1.5.4,不包含有关重试策略的故障转移功能的任何配置。但是,在生产过程中负载较重和速度较慢的情况下,我从日志中观察到并怀疑正在发生重试。
CXF 插件中是否为 Grails 配置了重试策略?如果是,如何停止重试。
c# - 如何知道 retryPolicy.excute() 中的重试迭代次数
对于同一请求的多次重试,我收到错误“请求消息已发送。无法多次发送相同的请求消息”。因此,据我所知,我需要重新创建一个新的 HttpRequestMessage 以进行第二次重试。有没有办法知道 retryPolicy.Execute() 中的重试迭代次数,以便我可以克隆 HttpRequestMessage 以进行第二次重试空?