本文主要是介绍建个RPC工程(JAVA),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、简介
- 1、项目构成
- 二、项目搭建
- 1、songsir-rpc-dependencies
- 2、songsir-rpc-parent
- 3、songsir-rpc-provider--web
- 4、songsir-rpc-consumer-web
- 三、最后
一、简介
1、项目构成
- songsir-rpc-dependencies:主要控制第三方依赖的引入和版本相关控制
- songsir-rpc-parent:继承songsir-rpc-dependencies,下面包含6个model,分别是songsir-rpc-bean、songsir-rpc-common、songsir-rpc-consumer-dao、songsir-rpc-consumer-service、songsir-rpc-provider-dao、songsir-rpc-provider-service
- songsir-rpc-bean:实体类模块
- songsir-rpc-common:公共类模块,包括工具类、枚举类等
- songsir-rpc-consumer-dao:消费者服务的持久层
- songsir-rpc-consumer-service:消费者的接口类
- songsir-rpc-provider-dao:服务提供者的持久层
- songsir-rpc-provider-service:服务提供者的接口类
- songsir-rpc-provider–web:服务提供者示例(web项目)
- songsir-rpc-consumer-web:服务消费者示例(web项目)
图示如下:
二、项目搭建
1、songsir-rpc-dependencies
- 创建maven项目,引入SpringBoot依赖:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version><relativePath/></parent>
接下来,使用<dependencyManagement>标签声明以后项目中需要用到的第三方依赖,项目参考:https://github.com/songsir01/songsir-rpc-dependencies.git
2、songsir-rpc-parent
新建项目,并依次创建各个model。继承songsir-rpc-dependencies,同样使用<dependencyManagement>标签声明各个model的依赖,方便生产者和消费者服务的引用。
项目参考:https://github.com/songsir01/songsir-rpc-parent.git
3、songsir-rpc-provider–web
新建maven项目,继承songsir-rpc-parent,引入songsir-rpc-provider-service、spring-boot-starter-web、dubbo-spring-boot-starter等依赖。
新建启动类,增加注解@DubboComponentScan(basePackages = {“com.songsir.rpc.provider.service.impl”})设置dubbo扫描报名。
@SpringBootApplication
@DubboComponentScan(basePackages = {"com.songsir.rpc.provider.service.impl"})
public class App extends SpringBootServletInitializer implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(App.class);}@Overridepublic void run(String... args) {System.out.println("App provider is running!");}
}
增加配置文件:
server.port=8080
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.43.134:2181
dubbo.registry.id=dubbo-consumer
dubbo.application.name=songsir-rpc-consumer
dubbo.protocol.port=20882
dubbo.protocol.name=dubbo
dubbo.protocol.status=server
dubbo.protocol.id=dubbo
最后写一个测试方法,方便消费者测试。
@Service(version = "1.0.0")
public class TestProviderServiceImpl implements TestProviderService {@Overridepublic String getHelloWorld(String msg) {return "Hello World!";}
}
项目参考:https://github.com/songsir01/songsir-rpc-provider-web.git
4、songsir-rpc-consumer-web
新建maven项目,继承songsir-rpc-parent,引入songsir-rpc-provider-service、songsir-rpc-consumer-service、spring-boot-starter-web、dubbo-spring-boot-starter等依赖。
增加配置文件:
server.port=8080
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.43.134:2181
dubbo.registry.id=dubbo-consumer
dubbo.application.name=songsir-rpc-consumer
dubbo.protocol.port=20882
dubbo.protocol.name=dubbo
dubbo.protocol.status=server
dubbo.protocol.id=dubbo
新建测试Controller:
@RestController
public class TestProviderController {@Reference(version = "1.0.0", check = false)private TestProviderService testProviderService;@RequestMapping("testConsumer")public String testConsumer() {return testProviderService.getHelloWorld("");}
}
项目参考:https://github.com/songsir01/songsir-rpc-consumer-web.git
三、最后
- 项目大致框架已经完成,分别启动provider和consumer即可测试服务是否可用
- 本项目在已安装zookeeper的前提下创建
- 可使用dubbo-admin查看服务的注册和消费情况
- 详细信息请参考我的github https://github.com/songsir01
这篇关于建个RPC工程(JAVA)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!