thrift实现C#调用Java服务

  最近用户流失分析模型,需要从日志里面提取一些数据,但是日志存储系统是部署到北京的(注以前的日志系统数据是存储在mysql的),大数据集群又是在成都的,这一下坑了,不得不考虑把数据同步到成都,但是受限于带宽问题,数据必须压缩一下,刚开始想的是用Kafak进行压缩然后传输,后来想了想觉得麻烦,还是写个外挂从数据库取数据,然后通过调用部署到成都的java服务入kafka,但是外挂用的c#写的,就需要使用thrift了。
  首先Java服务端需要使用thrift生成接口,我们需要准备截图中的两样东西,如图1,一个是thrift工具(http://thrift.apache.org/),一个是你自己需要定义的接口,直接用文本编辑即可,然后后缀改为以thrift结束,接口内容如图2,然后输入cmd,进入放置thrift的目录。

 

图1

图2

  后面步骤如下:

  1.输入截图中命令,生成java文件

  2.拷贝java代码到自己的java服务

  3.生成C#端代码,把接口文件调整一下,再命令空间加上csharp,然后输入截图中命令,生成csharp文件

  4.然后把该文件拷贝到自己的C#项目即可使用

  5.网上找了一个简单的客户端调用服务端的例子,验证可用,公司是封装了路由的,这里就不再体现

                public const string SERVERIP = "localhost";
		public static int SERVERPORT = 8090;
		public static int TIMEOUT = 3000;

		public void startClient(String username)
		{
			TTransport transport = null;
			try
			{
				transport = new TSocket(SERVERIP, SERVERPORT, TIMEOUT);
				//协议要和服务端一致
				TProtocol protocol = new TCompactProtocol(transport);
				HelloWorldService.Client client = new HelloWorldService.Client(protocol);
				transport.Open();
				String result = client.sayHello(username);
				Console.WriteLine("Thrift client result =: " + result);

			}
			catch (Exception e)
			{
				Console.WriteLine(e.StackTrace);
			}
			finally
			{
				if (null != transport)
				{
					//close
					transport.Close();
				}
			}
		}

 

 

posted @ 2017-02-20 22:15  人不疯狂枉一生  阅读(455)  评论(0)    收藏  举报