Tars 服务开发与上线

本教程为Java开发者提供了Tars的Spring、Spring Boot以及Spring Cloud的基本开发指南,主要包括以下几个方面:

  • 添加Tars依赖配置

  • 定义Tars接口文件

  • 使用Tars插件生成接口代码

  • 使用Tars编写简单的服务端和客户端服务

Tars-Spring 使用说明

功能说明

Tars支持使用Spring配置servant,使用此功能需要依赖tars-spring.jar包,以及spring 4及以上版本。你可以将你的servant作为一个Spring bean,你可以自由的使用Spring的功能最后只需要通过Tars提供的标签告知Tars哪些些bean是servant即可。

示例工程

tars-spring-server

依赖配置

使用此功能需要添加依赖jar包,在pom.xml中添加如下配置:

<dependency>
      <groupId>com.tencent.tars</groupId>
      <artifactId>tars-spring</artifactId>
      <version>1.7.2</version>
</dependency>

服务暴露配置

使用spring配置模式需要在resources目录下将tars原版配置文件servants.xml改为servants-spring.xml,如果两种配置文件均存在会优先读取servant.xml则不会启用spring模式。

Servant配置

在Spring模式下,servants-spring.xml为spring配置文件,在配置文件中需要先引入Tars的xsd文件:

Tars中自定义了多个spring标签,配置servant时需要先将servant定义为一个bean,然后通过Tars标签定义为servant:

servant标签通过name指定servant名称,ref指定对应的bean名,通过interface指定对应的接口名。当然你也可以通过添加@Component标签然后通过spring自动扫描获取到bean,同样只需要配置对应bean名即可:

Listener配置

listener的配置与servant配置相同,也需要将你的Listener定义为bean,然后通过tars标签将对应的bean指定为Listener:

1.3.0版本升级指南

如需使用tars-spring等新功能需要将tars升级到1.3.0版本及以上版本,本次改动相对较大,附上版本升级指南:

  1. 管理平台需要重新编译升级。

  2. tars-node需要升级到新版本。

  3. 在模版管理中修改tars.tarsjava.default模版的classpath配置项,修改为

classpath=${basepath}/conf:${basepath}/WEB-INF/classes:${basepath}/WEB-INF/lib

  1. 在构建tars-java项目时servants.xml需要放在resources目录下

Tars-Spring-Boot服务开发

功能说明

Tars支持使用通过spring boot的方式编写Tars服务,使用此功能需要依赖tars-spring-boot-starter.jar包,以及Spring Boot 2.0及以上版本。你可以将你的servant作为一个Spring bean,注解暴露spring bean即可。

示例工程

tars-spring-boot-server

tars-spring-boot-client

环境需求

  • JDK 1.8或以上版本

  • Maven 3.5或以上版本

  • Spring Boot 2.0或以上版本

服务端开发

工程目录

依赖配置

在pom.xml文件中需要添加如下配置:

spring boot及框架依赖

插件依赖

服务开发

Tars接口文件定义

Tars有自己的接口文件格式,首先我们需要定义Tars接口文件,在resources目录下新建hello.tars文件,内容如下:

使用插件生成接口代码

然后我们需要通过Tars插件将Tars接口文件转换为服务端接口代码。在工程根目录下,执行mvn tars:tars2java,即可得到HelloServant.java,内容如下:

实现接口

接着我们需要实现生成的服务端接口。新建HelloServantImpl.java文件,实现HelloServant.java接口,并通过@TarsServant注解来暴露服务,其中HelloObj为servant名称,与web管理平台中的名称对应。

开启Tars服务

最后,在Spring Boot启动类QuickStartApplication中添加@EnableTarsServer注解来开启Tars服务:

服务打包

通过spring-boot-maven-plugin,在根目录下执行mvn package即可打包为jar包进行部署。

客户端开发

工程目录

依赖配置

在pom.xml文件中需要添加如下配置:

spring boot及框架依赖

插件依赖

服务开发

使用插件生成服务端服务接口代码

服务端服务开发完成后,在客户端我们首先需要获得服务端服务的客户端接口代码。将服务端的hello.tars文件复制到resources目录下,并在工程根目录下,执行mvn tars:tars2java,即可得到HelloPrx.java。此时得到的是服务端服务的代理接口,并且提供了三种调用方式,分别为同步调用、异步调用和promise调用,具体内容如下:

异步的promise调用方式是Tars v1.7.2新增的功能,具体使用可以参考Tars接口文件

Tars客户端接口文件定义

然后对客户端服务进行接口文件的定义。在resources目录下新建client.tars文件,内容如下:

使用插件生成客户端服务接口代码

接着,使用Tars的maven插件生成客户端服务接口代码。修改pom.xml的tars2java插件依赖为,注意将<servant></servant>这一项设置为true。

在工程根目录下,重新执行mvn tars:tars2java,即可得到ClientServant.java,内容如下:

实现接口

我们需要对生成的客户端服务接口进行实现。新建ClientServantImpl.java文件,实现ClientServant.java接口,并通过@TarsServant注解来暴露客户端服务,其中ClientObj为servant名称,与web管理平台中的名称对应。

通过给客户端属性添加@TarsClient注解,可以自动注入对应服务,如果只填写Obj名称则采用默认值注入客户端,此外也可以在注解中自定义客户端配置,例如设置同步调用超时时间等。

注解提供的配置项:

开启Tars服务

最后,在Spring Boot启动类App中添加@EnableTarsServer注解来开启Tars服务:

服务打包

通过spring-boot-maven-plugin,在根目录下执行mvn package即可打包为jar包进行部署。

获取运行时Context

Tars-Spring-Cloud 使用说明

功能说明

Tars-java支持兼容Spring Cloud系统,用户可以将Tars-Java框架融入Spring Cloud。

示例工程

tars-spring-cloud-server

tars-spring-cloud-client

环境依赖

在操作前需要满足以下条件:

  • JDK 1.8或以上

  • 如果要想使用服务发现功能,需要已运行Spring Cloud的Eureka Server实例,具体配置启动方法请参考Spring Cloud相关教程。

发布服务

下面展示如何创建并发布一个服务。

  • 首先添加创建一个maven工程,在项目的pom.xml文件中添加依赖配置:

  • 编写接口Tars文件,生成服务端接口代码,具体操作过程参考tars_java_quickstart.md文档的服务开发部分。

  • 生成接口后需要对接口进行实现。实现接口中的方法,之后对整个实现类添加@TarsServant注解,该注解表明被修饰的类是一个Tars Servant,并需要在注解中表明该Servant名称,作为客户端调用Servant的标识,按照Tars规范,servant名称采用"Obj"结尾。

  • 编写服务启动类,采用spring boot的启动方式,并且通过注解@EnableTarsConfiguration表明Tars-Java服务,并会尝试向Spring Cloud注册中心注册服务。

  • 编写Spring Cloud配置文件,需要在配置文件中注明服务注册中心的地址和服务自身的信息等,在resources目录下的添加配置文件application.yml,示例如下:

  • 启动Application类,打开注册中心地址http://localhost:8761(以自己的实际情况为准,这是Eureka默认地址),可以看到Tars服务已经注册在Eureka上了:

eureka-tars-java

TESTAPP.HELLOJAVASERVER就是我们刚才注册的服务,其中TESTAPP对应配置文件中的应用名称(tars.server.application对应的属性),HELLOJAVASERVER对应配置文件中的服务名称(tars.server.server-name对应的属性)。Eureka上注册的名称为配置文件的应用名称加上服务名称,中间使用'.'号分割。Eureka页面上显示的服务名称为全部大写,但实际上还是我们配置文件中填写的名称。。

至此便开发完成了一个服务。

消费服务

下面展示如何发现并访问一个服务:

  • 首先添加创建一个maven工程,在项目的pom.xml文件中添加依赖配置

  • 使用服务端接口Tars文件生成客户端访问接口,具体操作过程参考tars_java_quickstart.md文档的客户端开发部分。

  • 编写启动类,采用spring boot的启动方式。

  • 编写配置文件application.yml,添加主控相关信息:

  • 通过注解@TarsClient来自动加载客户端访问接口,需要通过注解的name属性指定要访问的Obj对象名称,名称由访问目标servant的应用名+“.”+服务名+"."+servant名称三段组成。示例中的名称就是上面服务注册的servant。持有该变量的类需要注册为spring bean:

  • 调用目标方法

Last updated

Was this helpful?