1 Star 0 Fork 0

aming / bluevally-user

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
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插件。
<plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.5.0</version>
                <extensions>true</extensions>
                <configuration>
                    <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
                    <outputDirectory>${project.build.sourceDirectory}</outputDirectory>
                    <clearOutputDirectory>false</clearOutputDirectory>
                    <temporaryProtoFileDirectory>${project.build.directory}/protoc-dependencies</temporaryProtoFileDirectory>
                    <protocArtifact>com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.17.0:exe:${os.detected.classifier}</pluginArtifact>

                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
  • 运行插件的compile生成通信用的java对象,compile-custom生成grpc调用的java对象。
  • 配置服务定义文件,规则,服务名称.properties
  • 编写服务入口文件: 作为客户端调用别的服务的:
//获取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);

作为服务端提供服务的:

//生成提供服务的代理类
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文件中定义:

<plugin>
                <groupId>com.bluevalley.framework.mydb.generator</groupId>
                <artifactId>mydb-generator-maven-plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
                <configuration>
                    <url>jdbc:mysql://127.0.0.1:3306/test</url>
                    <user>root</user>
                    <pwd>lxm2214</pwd>
                    <fileDir>/Users/lixiaoming/mywork/bluevally/user/src/main/java/com/bluevally/microservice/user/entity</fileDir>
                    <packageName>com.bluevally.microservice.user.entity</packageName>
                    <suffix>Entity</suffix>
                    <tableName>acl_sid</tableName>
                </configuration>

                <executions>
                    <execution>
                        <id>generate  file</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>mydb-generator</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

其中url定义数据库地址,user定义数据库用户名,pwd定义数据库密码,fileDir定义生成entity文件的目录,packageName定义生成文件的包名,table_name定义要生成entity文件的表名 运行mydb-generator则执行生产entity文件。

空文件

简介

demo project 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/aming0502/bluevally-user.git
git@gitee.com:aming0502/bluevally-user.git
aming0502
bluevally-user
bluevally-user
master

搜索帮助