我希望在我的网络服务调用中使用节俭。从到目前为止我从 thrift 文档中阅读的内容来看,我必须编写一个 thrift 文件,其中包含我想要公开的 POJO 和服务。然后需要使用 thrift 编译器编译该文件以生成 Java 类。然后必须使用这些来编写客户端和服务器。
有没有更简单的方法来实现这一点(任何基于注释或 Spring 框架集成可用)?
我写了一篇关于 Spring Boot 和 Thrift 集成的文章,详细解释了如何将它们组合在一起 :) 你可以在这里找到我的文章:
Java.DZone:使用 Spring Boot 和 Apache Thrift 构建微服务。
通常,您应该像这样创建 Servlet bean:
@Bean
public TProtocolFactory tProtocolFactory() {
return new TBinaryProtocol.Factory();
}
@Bean
public Servlet calculator(TProtocolFactory protocolFactory, CalculatorServiceHandler handler) {
return new TServlet(new TCalculatorService.Processor<CalculatorServiceHandler>(handler), protocolFactory);
}
其中 TCalculatorService 是您的 Thrift 服务
不,spring 和 thrift 之间没有自定义绑定。创建.thrift
文件后,您将生成构成 Thrift 通信层的 Java 类。
例如,我创建了一个 Java 服务器,它通过 hibernate(这是一层)调用 SQL,并通过 thrift(另一层)返回数据。不幸的是,必须有一些 Java 代码来处理将抽象数据从一层移动到另一层的过程。
您可以使用此项目在 SpringBoot 和 Apache Thrift https://github.com/aatarasoff/spring-thrift-starter之间进行集成。
正如自述文件中所述,您只需连接启动器并创建处理程序,就像您使用 @RestController 一样:
@ThriftHandler("/api")
public class TGreetingServiceHandler implements TGreetingService.Iface {
@Override
public String greet(TName name) throws TException {
// your logic
}
}