代码拉取完成,页面将自动刷新
微服务演示项目
调用者: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
<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>
//获取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文件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。