上一篇文章我们说了注册中心怎么写
小宇:SpringCloud基础(1)zhuanlan.zhihu.com现在说一下Provider和Consumer的写法
先写Provider
在idea里新建一个项目 之前的注册中心不用关!!! 因为最后这些东西是要同时开着的
选中Eureka Discovery 这里特别说一下 因为这个是一个小demo就不连数据库玩了
如果有需要的话数据库链接什么的是在这里实现的 勾选SQL里的Mysql和Mybatis就可以了
然后写法就是和正常的Springboot一样
打开我们的配置文件
port设置我们的端口 注意别和注册中心一样 不然会冲突
然后第二行和注册中心的一模一样 之前我们注册中心使用的就是这个url
第三行是给我们provider起一个名字 我就简写成pdr了
然后打开我们的启动类 加上这行注解 @EnableDiscoveryClient
表明这个会注册进注册中心
如果要使用这个项目 在pom文件中导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
然后在启动类同级建立文件夹 再建立一个class
并在class头部加入@RestController注解
如果之后想让他显示出些东西
和正常的Controller一样的写法
然后我们的Provider就写完了
启动我们刚写完的Provider
可以看到我们的Provider已经成功注册了
建立Consumer同上 选择这个依赖 然后建立我们的Consumer项目
建立好后写我们的配置文件
最后一行 是我们的负载均衡 在这里写一下 用的 Ribbon
之后进入我们的启动类
加入这两个注解 但是 加完后会发现EnableFeignClients是红色的
这是因为SpringCloud2.0之后 Feign换地方了
然后为了让我们项目启动后不会自动停止 加上web的依赖
所以我们在pom文件下添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
然后EnableFeignClients的红色就会消失了
在我们启动类的同级目录下
建立两个文件夹
Controller和service
在service下建立接口 controller建立class
在接口中加上如下注解
这个注解的name值就是我们注册中心Provider(提供者)注册的名字
Consumer(消费者)根据这个名字去找提供者
把提供者相应的controller头部复制过来然后改成接口 就像这样 这里我们这里加一个接受参数
为了测试我们的负载均衡 之前的那个Provider也是为了测试负载均衡所以加上一个传入参数
然后写我们的controller类
头部声明 然后和正常controller一样
然后启动我们的项目
刷新我们的注册中心页面 发现我们的CUM也成功的注册进来了
现在我们开启的项目有三个 注册中心 提供者 消费者 、
注意 这三个项目都在启动ing! 没有停止的
为了能直观的看到我们的测试结果
对我们的pdr做一些修改 注意是修改Provider下的 然后重新启动项目
然后访问这个URL
看 这是我们运行的结果 现在 再弄一个一模一样的Provider
记得在配置文件里改端口号
这是我们新Provider的配置文件
启动后刷新我们的注册中心页面可以看到
有两个PDR了
再次访问
看两个PDR的控制台 他们输出的logger日志
循环20次的任务被分给了他们两个去处理
----------------分割
这是最基础的小demo搭建 测试已经同时开启了四个项目了 两个PDR一个CUM一个注册中心
如果以上都做出来了
那么就能理解一些分布式了吧?
多次的请求交给不同的PDR(Provider-提供者)去处理 在一个PDR不够用时可以创建多个PDR
一个CUM(Consumer-消费者)不够用可以创建多个CUM
一个PDR挂了还有更多的PDR顶上 一个CUM还有更多的CUM顶上
一个注册中心挂了还有更多的注册中心顶上
大家能看到这个应该也了解不少springcloud了
所以如果demo做出来了 大家应该可以更加深入的理解springcloud了
其他的组件zuul(网关)config什么的 大体也都是这个个注册流程
如果有需要的话 都可以建立后加入注册中心连接在一起
就是很多很多很多的项目了
所以 这时 我们就需要docker了