一個基于Netty的RPC框架
利用netty寫了一個簡單的RPC框架,純粹是為了理解RPC框架。
使用protostuff 1.07 序列化,以netty 3.2.1 網絡框架。
下載地址:https://github.com/stefzhlg/snrpc
e.g.
1,server class; interface and implementor // define an interface:
public interface SnRpcInterface {
public String getMessage(String param);
} // implement interface
public class SnRpcImpl implements SnRpcInterface {
public String getMessage(String param) {
return "hi,it is message from server...param+" + param;
}
} 2, start server
SnRpcInterface inter = new SnRpcImpl();
SnRpcServer server = new SnNettyRpcServer(new Object[] { inter });
try {
server.start();
} catch (Throwable e) {
e.printStackTrace();
} 3,config file
snrpcserver.properties
#tcpNoDelay snrpc.tcp.nodelay=true #call the bind method as many times as you want snrpc.tcp.reuseAddress=true #ISDEBUG snrpc.dev=true #TCP timeout snrpc.read.timeout=25000 #server port snrpc.http.port=8080
config.xml
<?xml version="1.0" encoding="UTF-8"?> <application> <!-- rpc interface services --> <rpcServices> <rpcService name="SnRpcInterface" interface="org.stefan.snrpc.server.SnRpcInterface" overload="true"> <rpcImplementor class="org.stefan.snrpc.server.SnRpcImpl"/> </rpcService> </rpcServices> </application>
4, client invoker
SnRpcConnectionFactory factory = new SnNettyRpcConnectionFactory(
"localhost", 8080);
factory = new PoolableRpcConnectionFactory(factory);
SnRpcClient client = new CommonSnRpcClient(factory);
try {
SnRpcInterface clazz = client.proxy(SnRpcInterface.class);
String message = clazz.getMessage("come on");
System.out.println("client receive message .... : " + message);
} catch (Throwable e) {
e.printStackTrace();
} Pre-requirement
-
JDK6+
-
Maven 2
Dependency
-
reflectasm-1.07.jar
-
asm-4.0.jar
-
log4j-1.2.16.jar
-
dom4j-1.6.1.jar
-
xml-apis-1.0.b2.jar
-
slf4j-api-1.6.6.jar
-
netty-3.2.1.Final.jar
-
jaxen-1.1.6.jar
-
protostuff-core-1.0.7.jar
-
protostuff-api-1.0.7.jar
-
protostuff-runtime-1.0.7.jar
-
protostuff-collectionschema-1.0.7.jar
-
commons-pool-1.6.jar
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!