问题标签 [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 回答
352 浏览

spring - 关于使用 Spring 重试

我在我的应用程序中调用一个 web 服务,它具有可以过期的身份验证令牌。如果令牌过期,我需要刷新令牌并重试 Web 服务。为此,我觉得 spring retry 可能是合适的人选。但我不知道如何在重试之间注入此刷新令牌服务。

0 投票
1 回答
2266 浏览

java - Spring新事务结合Retryable

如果我有一个方法对某个异常有一个 Spring 可重试,并且还有一个 Transactional(Requires_new),那么每次重试完成时,它会创建一个新事务还是使用现有事务?

IE

这里实际上会发生什么?

0 投票
1 回答
59 浏览

java - template.setRetryPolicy(policy) 抛出语法错误

在我的应用程序中,我正在调用 Web 服务。所以我想实现 Spring Retry 机制,让处理更健壮,更不容易失败。这是我第一次使用 Spring Retry

我创建了一个应用程序服务类,我在其中声明了 RetryTemplate 并设置了 RetryPolicy。

但它抛出了语法错误

即使我使用 ctrl+space 它也没有显示 setRetryPolicy() 方法。

下面是我的课:

我指的是http://docs.spring.io/spring-batch/reference/html/retry.html。这里我使用的是 Spring-retry 1.1.5.RELEASE。

0 投票
1 回答
3087 浏览

java - 如何在 Spring 中将 Retryable 和 CircuitBreaker 结合在一起?

Spring 的 @Retryable 注解将重试 3 次(默认)并回退到 @Recovery 方法。但是,@CircuitBreaker 将重试一次并在状态关闭时回退。

我想把这两个结合起来:当断路器状态关闭时,会在回退前重试3次(处理瞬态错误),如果状态打开,则直接回退。

有什么优雅的方法可以做到这一点?一种可能的方法是在函数内部实现重试逻辑,但我觉得这不是最好的解决方案。

0 投票
1 回答
548 浏览

java - Spring Integration - 异常和重试

我的设置:
我有一个使用 ActiveMQ 的消息守护程序,它将使用 JSON 消息。
JSON消息的发布者添加type带有值的标头,例如,com.example.Foo这是json消息的类型。我用它来将 json 转换为 pojo。

Spring config:
收到消息后,将执行以下步骤:
1. Transformer:将 json 转换为 pojo
2. Payload type router:根据 pojo 的类型,将 pojo 路由到适当的服务激活器。
3.服务激活器:处理消息。

服务激活器定义:

问题:

  1. 我想知道如何访问服务激活器中的消息头。似乎服务激活器无法访问消息标头,因为转换器正在返回一个 pojo。

  2. 假设服务激活器无论出于何种原因都无法调用下游休息服务。我现在想跳过处理这条消息,我想稍后重试这条消息。或者可以说处理此消息时出现异常。我想在延迟一段时间后重试处理此消息。我该如何做到这一点?

--edit--
根据 Artem 的评论,删除了细节以减少问题的大小。

0 投票
2 回答
2692 浏览

spring-cloud-stream - 每个异常的 spring-cloud-stream 重试策略

在 spring-cloud-stream 项目的文档中,我看到的唯一重试机制是单一的退避策略。
我想要实现的行为是三种不同的重试策略,以防在使用消息时引发异常:

  1. 不可恢复的异常 - 不会尝试再次处理此类消息。
  2. 可恢复的异常 - 这种消息在被丢弃之前会被重试多次。
  3. 瞬态异常 - 这种消息将被永远重试。

有没有办法为每种异常定义不同的重试策略?我知道在 spring-kafka 中有提供 RetryTemplate 并实现上述行为的能力。

我认为也许使用 DLQ 机制会有一种方法来实现这种行为。

编辑:我使用 Kafka 作为消息传递中间件。

0 投票
1 回答
1433 浏览

spring-amqp - 在 Spring RecoveryCallback 中获取消息详细信息

我正在将消息发布到 RabbitMQ 并且我想在 RabbitMQ 关闭时跟踪错误,为此我添加了一个RetryTemplate带有恢复回调的消息,但恢复回调仅提供此方法getLastThrowable(),我不确定如何提供详细信息RabbitMQ 关闭时失败的消息。(根据文档“RecoveryCallback在重试上下文仅包含该 lastThrowable字段时有所限制。对于更复杂的用例,您应该使用外部 RetryTemplate,以便您可以RecoveryCallback通过上下文的属性将附加信息传达给知道如何做到这一点,如果有人可以帮助我举一个很棒的例子。

兔子模板

恢复回调

AMQP 出站适配器

return IntegrationFlows.from("eventsChannel") .split() .handle(Amqp.outboundAdapter(rabbitMqTemplate) .exchangeName(exchangeName) .confirmCorrelationExpression("payload") .confirmAckChannel(ackChannel) .confirmNackChannel(nackChannel) ) .get();

0 投票
2 回答
7592 浏览

java - SpringBoot重试,剩余重试

我在我的项目中使用了弹簧声明式重试,例如

现在,我有两个问题。

  1. 使用异步重试是否可以,我没有任何问题,只是想确定一下。

  2. 第二个要求是,如果进程失败,我想将其记录到日志文件中,包括剩余重试次数。那么,有没有办法通过,或者从方法内部获取剩余重试次数?

0 投票
2 回答
2547 浏览

java - 有没有办法用 Spring 排队 REST 调用?

我正在开发一个项目,该项目正在对另一个服务进行 REST 调用以将数据保存在数据库中。数据非常重要,因此我们不能承受丢失任何东西。

如果网络出现问题,此消息将丢失,这是不可能发生的。我已经搜索过 Spring Retry,发现它旨在处理临时网络故障,这不是我所需要的。

我需要一种将 REST 调用放入某种队列(如 Active MQ)并保留顺序的方法(这非常重要,因为我收到了保存、删除和更新 REST 调用。)

有任何想法吗?谢谢。

0 投票
0 回答
1098 浏览

java - @Retryable 不适用于 @EventListener Spring

我在类中有一个方法,它也是一个组件。该方法具有以下注释:

出于某种原因,未触发重试。