问题标签 [spring-retry]

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 回答
1851 浏览

spring - SimpleRetryPolicy:Throwable 映射中的布尔值表示什么?

的构造函数SimpleRetryPolicy允许您指定哪些异常是可重试的。伟大的!

但是,此输入是一个映射,其中键是 Throwable 的类,值是布尔值。没有任何文档说明这个布尔值的用途——这里有人知道吗?

本质上,它填充了一个实例,它SubclassClassifier的文档对于我的简单头脑来说太难理解了:

基于地图的参数化对象类型的分类器。根据对象与提供的类型映射的继承关系对对象进行分类。如果要分类的对象是所提供映射的键之一,或者是其中一个键的子类,则返回该键的映射条目值。否则返回默认值,默认为空。

0 投票
2 回答
5701 浏览

java - 如何以指数方式增加 Spring RequestHandlerRetryAdvice 中的重试间隔

重试指定如下:

我预计每次尝试间隔都会增加 3 倍。实际上,我得到了以下间隔:5、15、30、30、30 秒。请参阅下面的确切时间和间隔。我错误地指定了什么?

0 投票
1 回答
916 浏览

transactions - 发生跳过时,有没有办法防止批处理对同一块/项目进行双重处理?

在我的特定场景中,我必须将从文件读取的大量实体持久保存到数据库中,但我的提交间隔配置为value = 1. 另外我不太确定使用中的委托处理器CompositeItemProcessor是否是幂等的。所以我的问题是,是否有办法防止浪费时间重新处理并避免对数据库进行许多未使用的查询。我还想使用 SkipListener 将读取/处理/写入中的错误记录到特定表中,并怀疑此类配置(无重新处理)不符合此要求。

我正在使用春季批次 2.1.9。

提前致谢。

____________________________更新 07-05-2016 ____________________________

经过几天的研究,我意识到一些用户和 Spring 开发人员之间存在概念上的争论。

我现在知道,正如@MichaelMinella 在2014 年这篇帖子的答案评论中所说,这种行为是在写作阶段抛出的跳过异常上设计的:

ItemWriter#write方法接收项目列表。如果不一次遍历它们,我们就无法确定列表中的哪个在编写器中引发了异常。

因此,框架还没有办法在不扫描整个列表的情况下发现失败的项目(即使块大小为1)。执行此操作的框架的内部行为在此 2013 帖子FaultTolerantChunkProcessor中进行了RetryTemplate描述,有关此问题的更多讨论可在此Spring Batch Forum 2012 帖子中找到。

0 投票
2 回答
4122 浏览

java - 从 application.properties 文件中读取 spring @Retryable 的 maxAttempts

注释中的maxAttempts 参数@Retryable是硬编码的。我可以从application.properties文件中读取该值吗?

就像是

0 投票
5 回答
29816 浏览

java - 如何使 spring @retryable 可配置?

我有这段代码

//这里有一些实现 }

有没有办法可以使用@Value 使 maxAttempts 、 delay 和 multiplier 可配置?或者有没有其他方法可以使注释中的这些字段可配置?

0 投票
3 回答
1767 浏览

java - 为什么@PostConstruct 和@Retryable 不能一起使用?

我创建了一个基于 Spring 框架的应用程序,使用AnnotationConfigApplicationContext.

一个 bean 有一个 init 方法,它创建到外部服务的连接。@PostConstruct一旦启动了工作的bean,就可以对其进行注释以自动运行。

为了在创建此连接时处理任何异常,如果捕获到异常,我希望我的 init 方法最多重试 5 次。当用两者注释方法时@PostConstruct@Retryable我看到异常被抛出一次并且程序退出 - 它似乎@Retryable没有效果。

我已经@EnableRetry在配置类中正确使用了@Configuration. 我在同一个 bean 上创建了另一个方法 B,它被注释为可重试,如果在实例化 bean 之后调用此方法,我可以看到该方法在抛出异常时被重试/按预期运行。

我对为什么这不起作用的想法可能与某些方面有关,或者 postconstruct 发生在 spring-retry 元素附加之前?

实际上有没有更好的方法来拥有一个可以处理异常并可以通过注释重试的初始化方法 - 而不是在方法中以编程方式尝试?

编辑:我现在同意不应通过@Postconstruct. 如果重试失败,这可能会阻止整个上下文初始化,这可能会产生不利影响。

然而,这还没有回答 Spring 框架的哪一部分不让这两个注释一起工作的问题。

0 投票
9 回答
50778 浏览

java - Springboot @retryable 不重试

以下代码不会重试。我错过了什么?

我在 pom.xml 中添加了以下内容。

我还尝试为@Retryable 提供不同的参数组合。

谢谢。

0 投票
1 回答
540 浏览

spring - 包括没有主类或服务类的 Spring @Retryable

我有一个没有 main 方法的 api,它只是一组用于调用数据库过程的类。这些类中都没有 Service 注释。我将这个 api 包含在另一个 spring boot 应用程序中。当我在外部 api 中将任何方法注释为 @Retryable 并从 Spring Boot 应用程序调用时,它不提供重试。

你能帮忙吗?

0 投票
1 回答
112 浏览

java - 是否可以根据抛出的异常对一个服务激活器使用 2 个不同的重试 bean?

我只想在出现 ConnectionException 的情况下对服务激活器进行认真的重试,对于其他异常,我不想使用重试或非常轻的重试。我可以使用什么配置?我的配置的本质如下:

0 投票
1 回答
16028 浏览

java - 尝试使用 @Retryable 排除异常 - 导致 ExhaustedRetryException 被抛出

我正在尝试使用@Retryable调用 REST 模板的方法。如果由于通信错误而返回错误,我想重试,否则我只想在调用中抛出异常。

当 ApiException 发生时,而不是被 @Retryable 抛出和忽略,我收到一个ExhaustedRetryException关于没有找到足够的“可恢复”(即@Recover方法)的抱怨。

我想我会看看是否存在可恢复的方法是否可以让它快乐并仍然按预期执行。没那么多。它没有抛出异常,而是调用了可恢复方法。

任何见解将不胜感激。是错误还是操作员错误?这是使用 Spring Boot 1.3.6 和 Spring-Retry 1.1.3。