twitter finagle java_java搭建finagle(2)
上篇文章是1年前写的惭愧惭愧,今天一个同事问我要demo然后看了下文章 好吧主要的代码 没写出来,今天补充下
上篇地址:http://www.cnblogs.com/rufus-hua/p/4159278.html
上篇写到 在 thrift文件夹里 新建 hello.thrift文件
如下面代码:
namespace java com.test.finagle.demo
service Hello{
string helloString(:string para)
i32 helloInt(:i32 para)
bool helloBoolean(:bool para)
void helloVoid()
string helloNull()
}
然后 点击编译 ,(如果不报错的)会看到在 target文件夹里生成 target\generated-sources\thrift\scrooge\com\test\finagle\demo 下面生成的hello.java文件 很好.
然后新建java文件 继承生成文件里的ServerIface接口
如代码:
public class HelloImpl implements Hello.ServiceIface {
public Future helloString(String para) {
return Future.value(para);
}
public Future helloInt(int para) {
return Future.value(para);
}
public Future helloBoolean(boolean para) {
return Future.value(para);
}
public Future helloVoid() {
return Future.value(null);
}
public Future helloNull() {
return Future.value(null);
}
}
ok 最后一步main 方法:
public class App {
static ListeningServer server;
public static void main(String[] args) {
Integer port = 9801;//这是 finagle 真正的监听地址
String zkHosts="127.0.0.1:9000";//这是zk服务器的地址 我这里只有一台 如果多台;分割
String zkPath="/soa/test/finagle";
try {
System.out.println("zkHosts:" + zkHosts + "\tzkPath:" + zkPath+"\tport:"+port);
Hello.ServiceIface iface=new HelloImpl();
server = Thrift.serveIface(new InetSocketAddress(port), iface);
String zkFullPath = String.format("zk!%s!%s!0", zkHosts, zkPath);
server.announce(zkFullPath);
System.out.println("finagle server start");
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
App.close();
}
});
Await.ready(server);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
public static void close() {
System.out.println("finagle server shutdown");
server.close();
}
}
下面上 client 端代码:(注:客户端是不用关心服务端真正的ip只需要确保zk能用就行 有个概念叫服务发现)
String zkHosts="127.0.0.1:9000";
String zkPath="/soa/test/finagle";
String zkFullPath = String.format("zk!%s!%s", zkHosts, zkPath);
ServiceFactory factory = Thrift.newClient(zkFullPath);
Hello.ServiceIface helloClient = new Hello.ServiceToClient(factory.toService(), new TBinaryProtocol.Factory());
String ret = helloClient.helloString("test").get();
Assert.assertEquals("test", ret);
最后附上 demo下载地址 http://pan.baidu.com/s/1kTKsYDT
ps: 最后 记得修改 maven的setting文件 的镜像
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
ss
false
socks5
127.0.0.1
1080
nexus
nexus
http://maven.oschina.net/content/groups/public
*
java搭建finagle(1)
1.新建maven项目 2.pom文件添加依赖 添加3个主要依赖com.twitter
Java搭建WebSocket的两种方式
下面分别介绍搭建方法:一.直接使用Java EE的api进行搭建.一共3个步骤:1.添加依赖 javax
Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)
这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...
从零开始学 Java - 搭建 Spring MVC 框架
没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...
手把手教你用新浪云容器 Java 搭建自己的网站
经过一段时间的开发,更新,迭代,新浪云容器 Java 环境逐渐成熟起来,相比过去的 Java 运行环境,可用性和易用性都得到了大量的提升.同时也收到了不少用户反馈的使用问题,特此在这篇文章里综合介绍一 ...
056 Java搭建kafka环境
1.使用Java项目搭建 2.新目录 3.添加项目支持 4.添加mavem与scala 5.修改pom <?xml version="1.0" encoding=" ...
java搭建 SpringMVC+Mybatis(SMM)+mybatis-generate
搭建SSM系统,首先要了解整个过程: 1.创建spring-mvc项目 2.在maven中添加要引用的jar包(使用框架都是较新的版本:) 3. jdbc.xml +spring-mybatis.xm ...
这一次,我连 web.xml 都不要了,纯 Java 搭建 SSM 环境!
在 Spring Boot 项目中,正常来说是不存在 XML 配置,这是因为 Spring Boot 不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭 ...
随机推荐
解决GitLab提交MergeRequest时,提示502 GitLab is not responding.的问题
最近使用GitLab提交MergeRequest时,提示502 GitLab is not responding. 使用gitlab-ctl tail查看错误信息如下: 2014/10/28 11:5 ...
[轉]redis;mongodb;memcache三者的性能比較
先说我自己用的情况: 最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据 然后,在另一个地方,要用到redis,然后就去研究了下redis. 一 ...
Gradle系列教程之依赖管理(转)
转自Lippi-浮生志 :http://ezlippi.com/blog/2015/05/gradle-dependency-management.html 这一章我将介绍Gradle对依赖管理的强大 ...
常用的rpm和yum的一些命令
常用的rpm命令 rpm -qa | grep coreutils
用Dalvik指令集写个java类
Dalvik指令集 .class public LCalculate;#定义类名 .super Ljava/lang/Object;#定义父类 .method public static main([ ...
Ext.Array 方法
1. Ext.Array.clean(arr); 过滤数组中的空元素 var arr = [1,"",2,"",3]; Ext.clean(arr); // [ ...
FindLetter 类——查找文件中特定的字符,每一行开头为某一个字符,则跳过
/*统计除了>之外的行里面CHED四个字母总数*/ #include #include #include
JavaScript 高级
在线JS编辑 JS 编写规范 阮一峰 ES 6 阮一峰 廖雪峰 操作文件
twitter finagle java_java搭建finagle(2)相关推荐
- 开源公司黄页之 Twitter 开源软件推荐
从Twitter的GitHub账户中可以看到,Twitter已经开源的开源项目有近200个,领域涉及分布式架构.大数据.异步网络传输(客户端.服务端).Web.工具等.Twitter可以称为构建于开源 ...
- 20+ Twitter开源软件精选
从Twitter的GitHub账户中可以看到,Twitter已经开源的开源项目有近200个,领域涉及分布式架构.大数据.异步网络传输(客户端.服务端).Web.工具等.Twitter可以称为构建于开源 ...
- 以Dapper、Zipkin和LightStep [x]PM为例阐述分布式跟踪的过去、现在和未来
\ 核心要点 \\ 在观测分布式系统和微服务时,分布式跟踪已经成为一个越来越重要的组件.现在有一些流行的开源标准和框架,比如OpenTracing API和OpenZipkin:\\t 分布式跟踪的基 ...
- 【Other】最近在研究的, Java/Springboot/RPC/JPA等
我的Springboot框架,欢迎关注: https://github.com/junneyang/common-web-starter Dubbo-大波-服务化框架 dubbo_百度搜索Dubbo与 ...
- 体系化认识RPC--转
原文地址:http://www.infoq.com/cn/articles/get-to-know-rpc?utm_source=infoq&utm_medium=popular_widget ...
- RPC框架(一)RPC简介
一.概述 二.RPC 2.1.RPC定义 2.2.RPC主要组成部分 三.影响RPC框架性能的因素 四.工业界的 RPC 框架一览 4.1.国内 4.2.国外 五.如何选择RPC框架 一.概述 随着公 ...
- 【大咖连载】服务设计与实现
更多精彩内容请关注我们 服务设计会影响到业务需求是否被正确.高效地实现,良好的服务设计能够帮助领域专家与开发人员之间,以及团队内部进行高效.准确的沟通.良好的实现则能缩短服务上线的周期,并提升可扩展性 ...
- 月PV破15亿:Tumblr架构揭密
随着每月页面浏览量突破15亿次,Tumblr已经名正言顺地跻身博客类平台中的名人堂.用户们对它的简洁.美观以及对使用体验的专注追求赞不绝口:它的相关社区也同样氛围温馨.人气爆棚.总之,人们喜欢这位博客 ...
- 转:Tumblr:150亿月浏览量背后的架构挑战
转:Tumblr:150亿月浏览量背后的架构挑战 by 唐福林 posted on 2012 年 02 月 17 日 导读:和许多新兴的网站一样,著名的轻博客服务Tumblr在急速发展中面临了系 ...
最新文章
- Rotate List
- 数据库查询某一列大写转化小写字母表示_算法/开发 面试必看! 【数据库】面试题合集...
- 华硕vm510l拆电池图解_图解说设备:凯斯CX80C你会买吗?
- 基础知识回顾——通用序列操作
- 鸿蒙系统首批更新名单,鸿蒙系统首批升级名单是哪些-鸿蒙系统首批升级名单详细介绍 - 系统家园...
- 基于Monte Carlo方法的2048 A.I.
- 股票预埋单第二天还有效么?
- 如何简化卷积神经网络_卷积神经网络:简化
- Visio 2013 Professional专业版密钥
- “耐撕”团队第一次讨论——“抢答器”需求分析
- 会议会展产业要善用信息技术提高活动运营管理效率
- 记 2022年11月5日 信息安全工程师考试
- VSCode搭建STM32开发环境(极简自我搭建懒人直接使用插件)
- 泛微OA流程插入JS代码块
- java poi pdf 导出
- 常识-就怕你不知道一条
- 区块链投资需要多少钱?不再是空谈
- 计蒜客题解——T1414:抠图
- 电商网站秒杀与抢购的系统架构
- 计算机网络-网络,互联网(day01)