【问题标题】:apache thrift integration with spring frameworkapache thrift 与 Spring 框架的集成
【发布时间】:2013-04-08 10:47:41
【问题描述】:

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

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

【问题讨论】:

    标签: java spring thrift


    【解决方案1】:

    我写了一篇关于 Spring Boot 和 Thrift 集成的文章,并详细解释了如何将它们组合在一起:) 你可以在这里找到我的文章:

    Java.DZone: Building Microservices with Spring Boot and 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 服务

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您可以使用此项目在 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
            }
        }
        

        【讨论】:

          【解决方案4】:
          猜你喜欢
          • 2018-10-13
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          • 2013-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多