finagle java_java搭建finagle(2)

本文详细介绍了如何使用Java搭建Finagle服务,包括创建thrift文件、生成服务接口、实现服务类以及启动服务。同时,文章还提到了客户端的创建和服务发现功能,通过连接Zookeeper来定位服务。此外,提供了相应的代码示例和Demo下载链接。
摘要由CSDN通过智能技术生成

上篇文章是1年前写的惭愧惭愧,今天一个同事问我要demo然后看了下文章 好吧主要的代码 没写出来,今天补充下

上篇地址:http://www.cnblogs.com/rufus-hua/p/4159278.html

上篇写到 在 thrift文件夹里 新建 hello.thrift文件

如下面代码:

namespace java com.test.finagle.demo

service Hello{string helloString(1:stringpara)

i32 helloInt(1:i32 para)bool helloBoolean(1:boolpara)

void helloVoid()stringhelloNull()

}

然后 点击编译 ,(如果不报错的)会看到在 target文件夹里生成 target\generated-sources\thrift\scrooge\com\test\finagle\demo 下面生成的hello.java文件 很好.

然后新建java文件 继承生成文件里的ServerIface接口

如代码:

public class HelloImpl implementsHello.ServiceIface {public FuturehelloString(String para) {returnFuture.value(para);

}public Future helloInt(intpara) {returnFuture.value(para);

}public Future helloBoolean(booleanpara) {returnFuture.value(para);

}public FuturehelloVoid() {return Future.value(null);

}public FuturehelloNull() {return Future.value(null);

}

}

ok 最后一步main 方法:

public classApp {staticListeningServer server;public static voidmain(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=newHelloImpl();

server= Thrift.serveIface(newInetSocketAddress(port), iface);

String zkFullPath= String.format("zk!%s!%s!0", zkHosts, zkPath);

server.announce(zkFullPath);

System.out.println("finagle server start");

Runtime.getRuntime().addShutdownHook(newThread() {

@Overridepublic voidrun() {

App.close();

}

});

Await.ready(server);

}catch(Exception e) {

e.printStackTrace();

System.exit(-1);

}

}public static voidclose() {

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(), newTBinaryProtocol.Factory());

String ret= helloClient.helloString("test").get();

Assert.assertEquals("test", ret);

最后附上 demo下载地址 http://pan.baidu.com/s/1kTKsYDT

ps: 最后 记得修改 maven的setting文件 的镜像

ss

false

socks5

127.0.0.1

1080

nexus

nexus

http://maven.oschina.net/content/groups/public

*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值