上一篇文章《手把手教你写rpc框架系列(十二)构建rpcserver》我们编写了RPCServer的服务端,那么在真实的环境中,我们肯定是需要把这个服务端给启动起来的,也就是我们希望服务提供者运行的时候,就启动这里的rpcserver。那么这块怎么启动呢?这里我们还是借助前面的@RPCService这个注解。所以我们下面来配置下对应的启动。
首先我们在前面的AutoConfiguration类里面,实例化一下这里的RPCServer
@Bean public RpcServer rpcServer(@Autowired RequestHandler requestHandler, @Autowired RpcRegisterProperty rpcRegisterProperty) { return new NettyRpcServer(rpcRegisterProperty.getServerPort(), rpcRegisterProperty.getProtocol(), requestHandler); }
然后我们实例化一下这个requesthandler
@Bean public RequestHandler requestHandler(@Autowired ServiceRegister serviceRegister) { return new RequestHandler(new JavaSerializeMessageProtocol(), serviceRegister); }
然后我们在DefaultRpcProcessor上面把这个rpcserver给启动起来,首先我们把RPCServer给注入进来
@Resource private RpcServer rpcServer;
然后在onApplicationEvent方法里面把RPCserver给启动起来
rpcServer.start();
以上我们就完成了服务端的启动。
这里我们需要测试一下,我们回到之前的users-provider里面,把这个项目启动起来
可以看到项目不再是启动之后就马上关闭的状态,而是一个常驻的进程了。此时我们也可以去zookeeper上看看当前的服务是否被注册到zookeeper上了,如下图:
可以看到这里的服务确实已经注册到服务中心了,此时我们停止掉服务,然后再看看zookeeper的情况,如下图:
可以看到当前服务被销毁之后,服务会自动从注册中心的列表中移除掉。
最后按照惯例,附上本案例的源码,登录后即可下载。
还没有评论,来说两句吧...