创建Thrift Server和Thrift Client

1、创建Server

package cn.horace.thrift.server;

import cn.horace.thrift.idl.IUserService;
import cn.horace.thrift.rpc.IUserServiceImpl;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocolFactory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.*;

import java.io.IOException;

/**
 * Created by Horace on 15-4-10下午9:00.
 */
public class SimpleServer
{
    public static void main(String[] args) throws TTransportException, IOException
    {
        // 创建处理器
        IUserService.Processor<IUserServiceImpl> processor = new IUserService.Processor<IUserServiceImpl>(new IUserServiceImpl());

        // 创建传输对象
        TServerTransport serverTransport = new TServerSocket(9090);

        // 创建传输工厂,非阻塞
        TTransportFactory transportFactory = new TFramedTransport.Factory();

        // 创建协议工厂
        TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();

        // 设置服务器参数
        TThreadPoolServer.Args serverArgs = new TThreadPoolServer.Args(serverTransport);

        // 设置处理器
        serverArgs.processor(processor);

        // 设置使用的协议
        serverArgs.protocolFactory(protocolFactory);

        // 设置使用的传输对象
        serverArgs.transportFactory(transportFactory);

        // 创建服务器
        TServer server = new TThreadPoolServer(serverArgs);

        System.out.println("Starting the simple server...");
        server.serve();
    }
}

2、创建客户端

package cn.horace.thrift.client;

import cn.horace.thrift.idl.IUserService;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

/**
 * Created by Horace on 15-4-10下午9:00.
 */
public class SimpleClient
{
    public static void main(String[] args) throws TException, InterruptedException
    {
        // 创建传输对象
        TSocket baseTransport = new TSocket("127.0.0.1", 9090);

        // 创建传输对象,非阻塞式
        TTransport transport = new TFramedTransport.Factory().getTransport(baseTransport);

        // 打开连接通道
        transport.open();

        // 创建协议对象
        TProtocol protocol = new TBinaryProtocol(transport);

        // 创建客户端对象
        IUserService.Client client = new IUserService.Client(protocol);

        client.findAll();

        transport.close();

        System.out.println("findAll ...");
    }
}
时间: 2024-11-08 17:03:21

创建Thrift Server和Thrift Client的相关文章

Thrift 个人实战--Thrift 服务化 Client的改造

前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还是有一定距离, 本系列将对Thrift作代码解读和框架扩充, 使得它更加贴近生产环境. 本文主要讲解thrift的服务化改造, 这边侧重于阐述对client(服务调用方)的改造和设计思想. 基础概念: 传统对client的优化, 主要是Client Manager化, 优化方式包括引入连接池, 支持

spark sql thrift server

### create data ## cat /dev/urandom | head -1 | md5sum | head -c 8 ## echo "$(date +%s)"|sha256sum|base64|head -c 16;echo ## cat /dev/urandom | awk 'NR==1{print $0|"md5sum|base64|grep -Eo '^.{16}'";exit}' for i in {1..100000} do passwd

「Spark」Spark SQL Thrift Server运行方式

Spark SQL可以使用JDBC/ODBC或命令行接口充当分布式查询引擎.这种模式,用户或者应用程序可以直接与Spark SQL交互,以运行SQL查询,无需编写任何代码. Spark SQL提供两种方式来运行SQL: 通过运行Thrift Server 直接执行Spark SQL命令行 运行Thrift Server方式 1.先运行Hive metastore nohup hive --service metastore & 2.在 hdfs-site.xml 中添加以下配置 <prope

hive12启动报错org.apache.thrift.server.TThreadPoolServer.&lt;init&gt;(Lorg/apache/thrift/server/TThreadPoolServer$Args;)

执行如下命令启动hive服务:./bin/hive --service hiveserver,报如下错误: Starting Hive Thrift ServerException in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.server.TThreadPoolServer.<init>(Lorg/apache/thrift/server/TThreadPoolServer$Args;)V 

Thrift 个人实战--Thrift 网络服务模型(转)

前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还是有一定距离, 本系列将对Thrift作代码解读和框架扩充, 使得它更加贴近生产环境. 本文主要讲解Thrift的高性能网络框架模型, 讲解各种网络模型的特点和区别. Thrift 高性能网络服务模型1). TServer类层次体系TSimpleServer/TThreadPoolServer是阻塞

Thrift 个人实战--Thrift 网络服务模型

前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还是有一定距离, 本系列将对Thrift作代码解读和框架扩充, 使得它更加贴近生产环境. 本文主要讲解Thrift的高性能网络框架模型, 讲解各种网络模型的特点和区别. Thrift 高性能网络服务模型1). TServer类层次体系TSimpleServer/TThreadPoolServer是阻塞

Socket编程】使用C++实现Server端和Client端

我是在Visual Stdio 2013上建立了两个工程,分别编译运行下面的两个main文件,然后进行测试的 服务端:Server.cpp #include #include using std::cout; using std::cin; using std::endl; #include using std::string; #pragma comment(lib,"ws2_32.lib") void main() { //创建套接字 WORD myVersionRequest;

SVN之Subversion server及TortoiseSVN client简单部署

1.前言 嘿嘿,本文有些内容来自于百度:简单整理并记录一下管理,SVN的一些东西.希望看到此文,能到大家有点帮助. 2.环境介绍 server端操作系统: window 2008 64bit server端软件:Slik-Subversion-1.9.4-x64.msi client端软件:TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi 本文最后提供了下载链接. 3.概述     Subversion是一个自由开源的版本控制系统.在Subversion管理下,

Thrift 个人实战--Thrift RPC服务框架日志的优化

前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还是有一定距离, 本系列将对Thrift作代码解读和框架扩充, 使得它更加贴近生产环境. 本文讲述RPC服务框架中, 日志的重要性, 以及logid的引入. 日志不仅包含丰富的数据(就看是否会挖掘), 而且还是线上服务问题追踪和排查错误最好的方式. 日志级别 采用大家喜闻乐见的log4j作为该RPC服