2

我希望在我的网络服务调用中使用节俭。从到目前为止我从 thrift 文档中阅读的内容来看,我必须编写一个 thrift 文件,其中包含我想要公开的 POJO 和服务。然后需要使用 thrift 编译器编译该文件以生成 Java 类。然后必须使用这些来编写客户端和服务器。

有没有更简单的方法来实现这一点(任何基于注释或 Spring 框架集成可用)?

4

4 回答 4

3

我写了一篇关于 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 服务

于 2014-11-09T16:04:30.023 回答
2

不,spring 和 thrift 之间没有自定义绑定。创建.thrift文件后,您将生成构成 Thrift 通信层的 Java 类。

例如,我创建了一个 Java 服务器,它通过 hibernate(这是一层)调用 SQL,并通过 thrift(另一层)返回数据。不幸的是,必须有一些 Java 代码来处理将抽象数据从一层移动到另一层的过程。

于 2013-04-16T15:33:37.070 回答
2

您可以使用此项目在 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
    }
}
于 2016-06-28T13:35:41.897 回答
0

以下项目似乎正在处理它 https://github.com/joshlong/spring-advanced-marhshallers-and-service-exporters/

于 2013-07-17T16:23:10.310 回答