# bluevally-user **Repository Path**: aming0502/bluevally-user ## Basic Information - **Project Name**: bluevally-user - **Description**: demo project - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-01-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bluevally-user #### 介绍 微服务演示项目 调用者:com.bluevally.microservice.user.main.Client 服务者:com.bluevally.microservice.user.main.User 调用者定义文件:client.properties 被调用者定义文件:user.properties 演示中client向User发送了一个用户注册信息,User微服务通过查询数据库判断,如果用户存在,则返回用户已经存在信息,否则返回注册成功。 #### 文件定义说明: ``` #注册中心地址 register.address=127.0.0.1:10001 #定义要注册的服务名称 service.ip=127.0.0.1 service.publish.name=user:5001:0.1 #定义依赖的服务 service.dependency.names=user:0.1,virtual:0.2 #定义链路跟踪的服务地址 #service.v2url=http://localhost:9411/api/v2/spans ``` #### 开发流程 - 在项目的${project.basedir}/src/main/proto下面编写proto文件 - 配置proto文件自动生成java代码的maven插件。 ``` org.xolstice.maven.plugins protobuf-maven-plugin 0.5.0 true ${project.basedir}/src/main/proto ${project.build.sourceDirectory} false ${project.build.directory}/protoc-dependencies com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier} grpc-java io.grpc:protoc-gen-grpc-java:1.17.0:exe:${os.detected.classifier} compile compile-custom ``` - 运行插件的compile生成通信用的java对象,compile-custom生成grpc调用的java对象。 - 配置服务定义文件,规则,服务名称.properties - 编写服务入口文件: 作为客户端调用别的服务的: ```java //获取channel工厂 ChannelFactory factory = ChannelFactory.getInstance(); factory.init("client.properties"); channel = factory.buildChannel("user"); //生成调用代理 UserServiceGrpc.UserServiceBlockingStub blockingStub = UserServiceGrpc.newBlockingStub(channel); //可把调用代理放到运行上下文中,其功能类似于bean-container AppContext.addBean("userServiceBlockingStub",blockingStub); AppContext.addBean("channel",channel); ``` 作为服务端提供服务的: ```java //生成提供服务的代理类 UserServiceImpl userService = AppContext.proxyBindService(UserServiceImpl.class); ChannelFactory factory = ChannelFactory.getInstance(); factory.init("user.properties"); //把提供服务的代理类注入server中,然后启动server factory.startServer(userService); ``` - 服务实现类的编写 对于要提供服务的方法,要加入@AutoConnection的注解,这样代理程序就能自动在线程上下文中生成一个唯一的数据库连接。 也可以通过`ThreadLocalHolder.autoHoldDbConn();`来手动在线程上下文中设置一个数据库连接,但是别忘了使用`ThreadLocalHolder.unHoldDbConn();` 进行连接的释放。 - 自动生成数据库entity文件的插件的使用 需要在pom文件中定义: ```xml com.bluevalley.framework.mydb.generator mydb-generator-maven-plugin 1.0-SNAPSHOT jdbc:mysql://127.0.0.1:3306/test root lxm2214 /Users/lixiaoming/mywork/bluevally/user/src/main/java/com/bluevally/microservice/user/entity com.bluevally.microservice.user.entity Entity acl_sid generate file clean mydb-generator ``` 其中url定义数据库地址,user定义数据库用户名,pwd定义数据库密码,fileDir定义生成entity文件的目录,packageName定义生成文件的包名,table_name定义要生成entity文件的表名 运行mydb-generator则执行生产entity文件。