繁体   English   中英

retryTemplate.execute 没有被调用

[英]retryTemplate.execute not getting called

我正在使用如下重试模板来处理可能发生的异常。 retryTemplate.execute 块永远不会被调用。 我已经定义了 retrytemplate bean,如下所示。 不确定这是否是正确的方法。 我是 java 和 spring 的新手。 任何帮助将不胜感激。

    public class checkUser{ 
    
    RetryTemplate retryTemplate;
        

      public checkUser(){}

      public checkUser(RetryTemplate retryTemplate){

       this.retryTemplate = retryTemplate;}
    

     private RetryTemplate retryConfig()  {
    
            RetryTemplate retryTemplate = new RetryTemplate();
            FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
            fixedBackOffPolicy.setBackOffPeriod(2000l);
            retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
    
    
            SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
            retryPolicy.setMaxAttempts(2);
            retryTemplate.setRetryPolicy(retryPolicy);
    
            return retryTemplate;
    
        }
    
    private void checkGroup() throws Exception {
            retryTemplate = retryConfig();
           
            try {
    
                retryTemplate.execute(new RetryCallback<Object>() {
                    @Override
                    public Object doWithRetry(RetryContext retryContext) throws Exception {
                        if (retryContext.getRetryCount() < 2) { // unexpected disconnection
                            throw new RuntimeException("retry exception");
    
                        }
    
                      //do something
    
    
                        }
    
                        return null;
                    }
                });
    
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

定义bean如下:

<bean id="checkUser"
          class="com.checkUser">

        <constructor-arg index="1" value="${retryTemplate}" />
        
    </bean>

    <bean id = "retryTemplate" class="com.checkUser">

    </bean>

Spring bean 完全被动; 在调用checkGroup()之前不会调用执行。

您也不应该为每个调用调用retryConfig() ,这只会覆盖传递给构造函数的调用。

您的 XML 配置根本没有意义。

您需要<constructor-arg ref="templateBean"/>其中templateBeanRetryTemplate类型的 bean。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM