Skip to content

An RPC framework based on Netty, ZooKeeper and Spring

Notifications You must be signed in to change notification settings

flylibteam/NettyRpc

This branch is up to date with leasontou/NettyRpc:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

09b1ad7 · Oct 30, 2016

History

15 Commits
Oct 30, 2016
Mar 13, 2016
Mar 13, 2016
Oct 30, 2016
Mar 13, 2016

Repository files navigation

NettyRpc

An RPC framework based on Netty, ZooKeeper and Spring
中文详情:Chinese Details

Features:

  • Simple code and framework
  • Non-blocking asynchronous call and Synchronous call support
  • Long lived persistent connection
  • High availability, load balance and failover
  • Service Discovery support by ZooKeeper

How to use

  1. Define an interface:

     public interface HelloService { 
     	String hello(String name); 
     	String hello(Person person);
     }
    
  2. Implement the interface with annotation @RpcService:

     @RpcService(HelloService.class)
     public class HelloServiceImpl implements HelloService {
     	@Override
     	public String hello(String name) {
     		return "Hello! " + name;
     	}
    
     	@Override
     	public String hello(Person person) {
     		return "Hello! " + person.getFirstName() + " " + person.getLastName();
     	}
     }
    
  3. Run zookeeper

  4. Start server:

     RpcBootstrap
    
  5. Use the client:

     ServiceDiscovery serviceDiscovery = new ServiceDiscovery("127.0.0.1:2181");
     final RpcClient rpcClient = new RpcClient(serviceDiscovery);
     // Sync call
     HelloService helloService = rpcClient.create(HelloService.class);
     String result = helloService.hello("World");
     // Async call
     IAsyncObjectProxy client = rpcClient.createAsync(HelloService.class);
     RPCFuture helloFuture = client.call("hello", "World");
     String result = (String) helloFuture.get(3000, TimeUnit.MILLISECONDS);
    

About

An RPC framework based on Netty, ZooKeeper and Spring

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%