SpringCloud微服务架构(二)--消费者微服务对生产者微服务的调用
在已搭建好的微服务项目中创建一个provider微服务作为生产者和一个consumer微服务作为消费者.
创建生产者微服务
第一步, 在已搭建好的微服务Maven项目上,新建一个Springboot项目作为生产者微服务(provider)
步骤如下图:
1.在springcloud-demo上,右键选择"New"--"Module"
2.选择"Spring Initializr"选项,即创建Springboot项目
3.输出自己心仪的项目名称
4.在依赖选择内,选中"Spring Cloud Discovery"--"Eureka Discovery Client"和"Web"--"Spring Web"两个依赖即可
5.一直Next即可
6.provider项目创建好后,springcloud-demo项目结构如下图
创建消费者微服务
同理,按照生产者微服务的创建方式创建一个consumer项目即可.consumer项目创建好后,springcloud-demo项目结构如图
上图中,consumer项目与provider项目共同作为EurekaClient,即服务客户端.
eureka项目作为EurekaServer,即服务的发现与注册中心.
服务客户端EurekaClient实现向服务注册中心EurekaServer的注册
--provider项目
配置application.yml文件
配置启动类
需要在指定Springboot项目的启动类上标注@EnableDiscoveryClient注解,声明该Springboot是一个EurekaClient.
EurekaClient启动类注解也可以使用@EnableEurekaClient注解替换.在SpringCloud中服务发现组件有多种选择,
@EuableDiscoveryClient为各种服务组件提供了支持,该注解是spring-cloud-commons项目的注解,是一个高度的抽象.
@EuableEurekaClient声明是Eureka的Client,该注解是spring-cloud-netflix项目的注解,只能和Eureka一起工作.
--consumer项目
配置application.yml
配置启动类
配置好provider和consumer项目后,便按照"eureka"--"provider"--"consumer"的顺序启动三个Springboot项目
在浏览器上输入http://localhost:8761进入服务发现与注册中心,查看服务是否正常
在Application栏的Status状态栏中,两服务的状态均为UP,说明服务处于正常状态,可供调用.
以上,服务的注册中心、生产者和消费者均已搭建好了,便可以编写调用的逻辑了.进而实现消费者调用生产者的过程
编写生产者供调用的接口
创建一个根据Id获取用户信息的测试接口即可.
创建一个User实体类,用于返回用户数据
编写获取用户信息的rest方法
生产者的获取用户信息接口编写好了.
编写消费者调用生产者的接口
由于消费者和生产者分别属于两个Springboot项目,启动时占用两个不同的端口,所以存在跨域问题.
需要往IOC容器中注入一个可跨域调用接口的对象RestTemplate
编写消费者调用生产者服务的rest接口
RestTemplate通过getForObject方法,向生产者restUrl为http://localhost:8081/user/{id}这个接口发送GET请求.生产者一旦接收到请求,将会返回一个用户信息.
现在重启生产者和消费者两服务,然后通过浏览器地址输入框进行测试.
通过调用消费者所提供的(调用生产者的)接口,消费者微服务会获取生产者返回的用户信息,然后由消费者微服务再返回给浏览器端.以上便实现了,消费者微服务获取生产者微服务信息