当前位置: 首页 > 知识库问答 >
问题:

如何使spring@Retryable可配置?

上官扬
2023-03-14
@Retryable(maxAttempts = 3, stateful = true, include = ServiceUnavailableException.class,
        exclude = URISyntaxException.class, backoff = @Backoff(delay = 1000, multiplier = 2) )
public void testThatService(String serviceAccountId)
        throws ServiceUnavailableException, URISyntaxException {

//此处有一些实现}

有没有一种方法可以使用@value来配置maxaTempts、delay和乘法器?或者是否有其他方法使注释中的这些字段可配置?

共有1个答案

艾灿
2023-03-14

目前还不可能;为了引入属性,必须更改注释以接受字符串值,并且注释bean后处理器必须解析占位符和/或SpEL表达式。

请参阅此答案以获得替代方案,但目前无法通过注释来完成。

编辑

<bean id="retryAdvice" class="org.springframework.retry.interceptor.RetryOperationsInterceptor">
    <property name="retryOperations">
        <bean class="org.springframework.retry.support.RetryTemplate">
            <property name="retryPolicy">
                <bean class="org.springframework.retry.policy.SimpleRetryPolicy">
                    <property name="maxAttempts" value="${max.attempts}" />
                </bean>
            </property>
            <property name="backOffPolicy">
                <bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
                    <property name="initialInterval" value="${delay}" />
                    <property name="multiplier" value="${multiplier}" />
                </bean>
            </property>
        </bean>
    </property>
</bean>

<aop:config>
    <aop:pointcut id="retries"
        expression="execution(* org..EchoService.test(..))" />
    <aop:advisor pointcut-ref="retries" advice-ref="retryAdvice"
        order="-1" />
</aop:config>
 类似资料:
  • 我想把这个放在我的房子里 下面是我的log4j2。

  • 本文向大家介绍详解spring boot使用@Retryable来进行重处理,包括了详解spring boot使用@Retryable来进行重处理的使用技巧和注意事项,需要的朋友参考一下 前言 什么时候需要重处理? 在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁失败,等等,这些错误可能是因为网络波动造成的,等待过后重处理就能成功.通常来说,会用try/cat

  • 我正在尝试了解如何使用Spring。 我试着效仿这个例子。但是,当我从Eclipse启动Tomcat时,我得到了以下错误: 这是DispatcherServlet的相关代码。xml salvaUtente()是一种方法,我将在其中处理多个插入(现在仍然是exmpty)。

  • 当我运行单元测试时,我希望thisFails()方法重试3次,然后我希望看到recovery logger行打印出来,但它只尝试一次,然后抛出异常。底部的输出是在我运行测试之后。 我错过了什么? 请忽略此部分,然后跳到代码。门楣匠认为我没有足够的说明来张贴。我认为这样的措辞足以让我的问题被人理解,但出于某种原因,我不允许发布这个问题,除非我写更多的东西。还有更多的东西,等等。 --Spring启动

  • 这段配置通过上下文进行扫描--我用调试器检查了它。问题可能出在哪里?

  • 问题内容: 我有这样的XML: 它可以毫无问题地配置转换器。 但是,此代码无法做到相同: 这部分配置按上下文进行扫描-我通过调试器对其进行了检查。问题可能出在哪里? 问题答案: 从我的角度来看,您的问题就是名字。一旦您没有明确设置名称,将使用的名称是。 从文档: 该bean的名称,或者如果是复数,则为该bean的别名。如果未指定,则Bean的名称为带注释的方法的名称。如果指定,方法名称将被忽略。