问题标签 [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 投票
2 回答
299 浏览

database - 数据创建响应超时的最佳重试策略

在这种情况下,最好的重试策略是什么:

Database成功创建数据条目,但响应时间过长Application。所以要执行这项工作,Application重试创建,当然会Database返回一个“已经存在”的错误。所以最后从Application他的角度来看,好像是创作失败了,其实是成功了。更糟糕的是,如果这是在一系列步骤的中间,那么就无法Application决定是否触发前面步骤的回滚。

增加超时时间Application不是一个可接受的解决方案,因为 IP 网络永远不可能 100% 可靠,而且响应在网络中丢失的可能性总是很小。

在创建之前添加对存在的检查<data>可能会起作用。但这只是在考虑并发性的情况下。在我的情况下,可以有多个客户Database,我不确定竞争条件的可能性。

0 投票
1 回答
383 浏览

java - CompletionService 中的重试策略

我需要为通过 ExecutorCompletionService 调用 API 配置重试策略。

示例代码:

为调用 API 时抛出的 TimeoutException 实施重试策略的最佳方法是什么?

0 投票
0 回答
556 浏览

c# - MassTransit 中的多次重试策略

我在我的应用程序中使用 MassTransit,并希望配置多个重试策略。文档没有提到他们将如何交互,所以我希望有人能澄清一下。

我想要做的是为一些等待可用资源的消费者实施二次重试。如果资源不可用,我想抛出一个特定的异常并稍后重试。

为此,我有这样的事情。

我还想要一个通用的重试策略来处理所有失败,除非我需要重试。

MassTransit 可以处理这个问题吗?我应该将这些重试策略放置在哪个级别以获得最佳结果(总线、端点或消费者)?

谢谢

0 投票
2 回答
3580 浏览

error-handling - 如何处理 SMTP 超时

我正在使用用 C# 编写的客户端应用程序向公司交换服务器发送批量电子邮件。

客户端应用程序超时(而不是服务器)可能会发生,并且确实发生了。由于无法知道服务器是否完成了请求,这种情况下如何处理重试?

没有涉及可用于避免重复的 ID。设置长超时甚至无限超时都不是一个好策略。

我正在使用指数退避算法进行重试。在这种情况下,它应该只发送一个副本,因为下次它会等待更长的时间。

我认为没有子弹教授解决方案。无论如何,由于它是第一个此类项目,我需要检查是否有人有我想念的解决方案。

更新:交易所正在做中继。我正在使用 SmtpClient 发送电子邮件。问题是服务器可以发送 250 Ok 消息,但接收方始终没有收到,然后重试。这是我在这篇文章中试图解决的唯一问题。

在 Rest 服务中,推荐的方法是使用并发错误。如果客户端发布某些内容并获得“409 - 冲突”状态,则表示该消息已存储在服务器上。但是为了让这种情况发生在那里,它是由客户端创建的消息的密钥,并且是消息的一部分。SMTP 似乎没有可以防止这种情况的机制。

0 投票
1 回答
2584 浏览

c# - 使用多种方法重试逻辑

我正在客户端实现 WCF 服务的重试逻辑。我在 WCF 服务中有多个操作,具有各种输入参数和返回类型。

我创建了一个包装器,可以使用 Action 委托调用这些没有返回类型(void)的特定方法。有什么方法可以调用具有各种输入参数和返回类型的方法。

或者是否有任何逻辑可以在可以处理多个 WCF 服务的客户端上实现重试功能。

我使用上述方法并拨打电话

我不断收到错误“无法在匿名委托中使用 ref 或 out 参数”

0 投票
1 回答
826 浏览

c# - 如何配置 WebJob ServiceBusTrigger 重试策略

编辑:我将接受与 Azure 配置相关的更改作为此问题的答案。


我正在尝试设置重试策略,以防止在第 3 方服务暂时不可用时立即重试消息。

目前,该作业会立即重试多次,并且由于 3rd 方服务的临时中断而每次都失败。

如何为这些消息设置重试延迟?

我有以下主要代码:

我有一个可以正确记录错误的 ErrorMonitor 设置:

我的消息处理程序如下所示:

0 投票
1 回答
234 浏览

transactionscope - 抛出异常时,Rebs 处理程序不会重试

我将 rebus 3.1.5 与 rebus.rabbitmq 3.0.0 和 rabbitmq.client 4.1.1 一起使用。我已配置为使用简单的重试策略,最多 2 次传递尝试。如果抛出异常,我想重试该消息。我不使用事务范围。但是当抛出异常时,我不会再次重新传递消息(它甚至不在错误队列中)

如果这是不可能的,并且如果我需要使用 HandleMessagesInsideTransactionScope 配置 rebus,它是否会锁定我的数据库,直到我完成处理程序工作?

非常感谢!

编辑:这是处理程序的样子:

这就是总线的配置方式:

0 投票
2 回答
5105 浏览

java - 使用 RetryPolicy 和 CircuitBreaker 进行故障保护会引发 CircuitBreakerOpenException

我正在尝试将重试策略与具有 Failsafe 的 CircuitBreaker 模式相结合,但是当尝试在电路打开并中断时出现 CircuitBreakerOpenException 异常。

https://github.com/jhalterman/failsafe

问题是通过将重试延迟设置为小于电路的关闭时间而产生的。

如何控制此异常,使重试策略不中断?我想这样做是因为我可以让多个同时实例向休息服务发起请求,并且重试不会中断。

我的代码:

我的结果:

0 投票
1 回答
55 浏览

grails-2.2 - Grails 插件 cxf-client-1.5.4 故障转移

从 Maven Repository 下载的 cxf-client-1.5.4,不包含有关重试策略的故障转移功能的任何配置。但是,在生产过程中负载较重和速度较慢的情况下,我从日志中观察到并怀疑正在发生重试。

CXF 插件中是否为 Grails 配置了重试策略?如果是,如何停止重试。

0 投票
1 回答
221 浏览

c# - 如何知道 retryPolicy.excute() 中的重试迭代次数

对于同一请求的多次重试,我收到错误“请求消息已发送。无法多次发送相同的请求消息”。因此,据我所知,我需要重新创建一个新的 HttpRequestMessage 以进行第二次重试。有没有办法知道 retryPolicy.Execute() 中的重试迭代次数,以便我可以克隆 HttpRequestMessage 以进行第二次重试空?