上一篇文章《手把手教你写rpc框架系列(七)实现使用注解自动注册到zookeeper》我们编写了@RPCService注解的逻辑,这样子我们在实际的项目中,只需要使用@RPCService即可完成项目启动的时候就自动向zookeeper注册自己。这篇文章我们来测试下服务提供者是否可以实现自动注册。
按照rpc项目的惯例,我们在这里创建一个名为user-api的项目,里面主要编写一个user的类,示例如下:
package org.user.api.model; import java.io.Serializable; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; @Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode @ToString @Builder public class Users implements Serializable{/** * */ private static final long serialVersionUID = 8887979745001033429L; private Integer userId; private String userName; }
然后我们编写一个UserService的接口,实现查询一个用户的功能,完整代码示例如下:
package org.user.api.service; import org.user.api.model.BaseResponse; public interface UserService { public BaseResponse getUser(Long userId); }
剩下的在这里项目里面还有BaseResponse这种类暂时不贴出来了,直接可以看源码。整个user-api项目的图示如下:
接着我们再创建一个users-provider的项目,用来作为服务的提供者,实现用户信息的查询,所以这里我们需要创建一个UserServiceImpl的类,实现api里面的UserService,这个UserServiceImpl类的完整代码示例如下:
package org.users.provider.service.impl; import org.user.api.model.BaseResponse; import org.user.api.model.Users; import org.user.api.service.UserService; import org.wz.rpc.framework.anotation.RPCService; @RPCService public class UserServiceImpl implements UserService{ @Override public BaseResponse getUser(Long userId) { Users users = Users.builder().userId(1).userName("张三").build(); return BaseResponse.ok(users); } }
可以看到我们在这个serviceimpl上添加了@RPCService这个注解。
然后我们使用springboot的方式启动下user-provider项目,启动类代码如下:
最后我们需要在配置文件application.properties中配置下zookeeper的信息,配置信息如下:
server.port=8081 wz.rpc.register-address=192.168.31.218:2181 wz.rpc.server-port=18000
以上我们就完成了一个简单的demo示例。我们把users-provider启动起来,然后看看zookeeper的信息
可以看到信息被注册上来了,因为路径已经创建了。
备注:
1、这里的话在zookeeper路径里面没有看到元数据信息,主要是咱们的users-provider启动之后就会自动关闭掉,因此zookeeper会把元数据信息给删除掉。后面我们把其他代码填充后,这个users-provider项目就是一个常驻的项目了,到时候就可以在zookeeper中看到注册的元数据信息了。
最后来一张图,看看目前的项目进度:
按照惯例,附上本案例的源码,登录后即可下载。
还没有评论,来说两句吧...