Web服务重试Java

时间:2014-06-20 07:59:23

标签: java web

我有一个Java Web应用程序A,它将Pojo发送到另一个Web应用程序B.我想创建一个机制,如果B关闭,则重试从A到B重新发送Pojos。在A中配置B的api的方式是通过Spring在A&类路径中使用B&#39的罐子。我已经试了一下,但是重试没有用。任何人都可以告诉我,我是否朝着正确的方向前进?

这里的错误是我的代码首先执行,然后正确抛出异常。 catch块中捕获了异常。 catch块重新调用callB(),它会再次正确地抛出异常但是我的重试代码会进入非源文件异常处理代码并停止。

编辑:我不能使用jcabi-aspects,因为Gradle不支持它。

public Object getB(Object request){

    if (bClient != null) {
      int retryCount = 0;
      try {
        return callB(request);
      } catch (Exception e) {

        if (++retryCount > 3) {
           return null;
        }
        return callB(request);
      }
    }

    return null;
  }

      private Object callB(Object request){
        return bClient.callServiceB(request);
      }

1 个答案:

答案 0 :(得分:0)

由于您希望代码重复执行某事,直到成功,请考虑将控制逻辑编写为循环。您会发现这使您可以在代码放弃之前更改重试次数。