首页 > 解决方案 > 如何编写 Java (v11) REST 客户端库以模块化方式调用多个 Spring 微服务?

问题描述

我正在编写一个 Java 库,它将调用多个基于 Spring 的微服务/REST 端点来执行 GET/PUT/POST 等。计划使用 OkHttpClient 库以同步和/或异步方式调用这些服务。

编写一个基类来建立与每个服务的连接是否有意义?

public class ConnectionKlass {

  private OkHttpClient client;
  int timeout;
  int wTimeout;

  public ConnectionKlass(int timeout, boolean wTimeout){
    this.client=new OkHttpClient.Builder()
        .connectTimeout(timeout, TimeUnit.SECONDS)
        .writeTimeout(wTimeout, TimeUnit.SECONDS)
        .build();
  }
}

然后像下面这样编写每个服务客户端类?

public class ValidationServiceClient {
  
   private connection;

   public ServiceAClient(reqId, timeout, wTimeout) { this.connection = ConnectionKlass(..); }
   public validate(headers, body..) {...}
   public asyncValidate(headers, body..) {...}
   ...
}

public class MessageServiceClient {
  
   private connection;

   public ServiceBClient(reqId, timeout, wTimeout) { this.connection = ConnectionKlass(..); }
   public notify(eventType, message) {...}
   public asyncNotify(eventType, message) {...}
   ...
}

我对 Java 并不陌生,但对 J2EE 世界并不陌生。试图衡量一个好的设计/实现是什么样的?我应该使用特定的设计模式来最大化模块化和易于维护性吗?

标签: javaspring-bootoopdesign-patternshttpclient

解决方案


推荐阅读