问题标签 [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.
spring - 关于使用 Spring 重试
我在我的应用程序中调用一个 web 服务,它具有可以过期的身份验证令牌。如果令牌过期,我需要刷新令牌并重试 Web 服务。为此,我觉得 spring retry 可能是合适的人选。但我不知道如何在重试之间注入此刷新令牌服务。
java - Spring新事务结合Retryable
如果我有一个方法对某个异常有一个 Spring 可重试,并且还有一个 Transactional(Requires_new),那么每次重试完成时,它会创建一个新事务还是使用现有事务?
IE
这里实际上会发生什么?
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。
java - 如何在 Spring 中将 Retryable 和 CircuitBreaker 结合在一起?
Spring 的 @Retryable 注解将重试 3 次(默认)并回退到 @Recovery 方法。但是,@CircuitBreaker 将重试一次并在状态关闭时回退。
我想把这两个结合起来:当断路器状态关闭时,会在回退前重试3次(处理瞬态错误),如果状态打开,则直接回退。
有什么优雅的方法可以做到这一点?一种可能的方法是在函数内部实现重试逻辑,但我觉得这不是最好的解决方案。
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.服务激活器:处理消息。
服务激活器定义:
问题:
我想知道如何访问服务激活器中的消息头。似乎服务激活器无法访问消息标头,因为转换器正在返回一个 pojo。
假设服务激活器无论出于何种原因都无法调用下游休息服务。我现在想跳过处理这条消息,我想稍后重试这条消息。或者可以说处理此消息时出现异常。我想在延迟一段时间后重试处理此消息。我该如何做到这一点?
--edit--
根据 Artem 的评论,删除了细节以减少问题的大小。
spring-cloud-stream - 每个异常的 spring-cloud-stream 重试策略
在 spring-cloud-stream 项目的文档中,我看到的唯一重试机制是单一的退避策略。
我想要实现的行为是三种不同的重试策略,以防在使用消息时引发异常:
- 不可恢复的异常 - 不会尝试再次处理此类消息。
- 可恢复的异常 - 这种消息在被丢弃之前会被重试多次。
- 瞬态异常 - 这种消息将被永远重试。
有没有办法为每种异常定义不同的重试策略?我知道在 spring-kafka 中有提供 RetryTemplate 并实现上述行为的能力。
我认为也许使用 DLQ 机制会有一种方法来实现这种行为。
编辑:我使用 Kafka 作为消息传递中间件。
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();
java - SpringBoot重试,剩余重试
我在我的项目中使用了弹簧声明式重试,例如
现在,我有两个问题。
使用异步重试是否可以,我没有任何问题,只是想确定一下。
第二个要求是,如果进程失败,我想将其记录到日志文件中,包括剩余重试次数。那么,有没有办法通过,或者从方法内部获取剩余重试次数?
java - 有没有办法用 Spring 排队 REST 调用?
我正在开发一个项目,该项目正在对另一个服务进行 REST 调用以将数据保存在数据库中。数据非常重要,因此我们不能承受丢失任何东西。
如果网络出现问题,此消息将丢失,这是不可能发生的。我已经搜索过 Spring Retry,发现它旨在处理临时网络故障,这不是我所需要的。
我需要一种将 REST 调用放入某种队列(如 Active MQ)并保留顺序的方法(这非常重要,因为我收到了保存、删除和更新 REST 调用。)
有任何想法吗?谢谢。
java - @Retryable 不适用于 @EventListener Spring
我在类中有一个方法,它也是一个组件。该方法具有以下注释:
出于某种原因,未触发重试。