本人学习Netty后决定自己写1个基于Netty、Zookeeper、Spring的轻量级RPC框架,收获颇丰,不过本人才疏学浅,难免有所疏漏,若有批评和建议请发到邮箱[email protected]
- 支持长连接
- 支持异步调用
- 支持心跳检测
- 支持JSON序列化
- 接近零配置,基于注解实现调用
- 基于Zookeeper实现服务注册中心
- 支持客户端连接动态管理
- 支持客户端服务监听、发现功能
- 支持服务端服务注册功能
- 基于Netty4.X版本实现
-
在服务端的Service下添加你自己的Service,并加上@Service注解
@Service public class TestService { public void test(User user){ System.out.println("调用了TestService.test"); } }
-
生成1个服务接口并生成1个实现该接口的类
public interface TestRemote { public Response testUser(User user); }
@Remote public class TestRemoteImpl implements TestRemote{ @Resource private TestService service; public Response testUser(User user){ service.test(user); Response response = ResponseUtil.createSuccessResponse(user); return response; } }
- 在客户端生成一个接口,该接口为你要调用的接口
public interface TestRemote { public Response testUser(User user); }
- 在你要调用的地方生成接口形式的属性,为该属性添加@RemoteInvoke注解
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=RemoteInvokeTest.class) @ComponentScan("\\") public class RemoteInvokeTest { @RemoteInvoke public static TestRemote userremote; public static User user; @Test public void testSaveUser(){ User user = new User(); user.setId(1000); user.setName("张三"); userremote.testUser(user); } }