三、服务发现-Feign
3.1 创建项目导入依赖
-
eureka-server
-
Ribbon
-
OpenFeign
3.2 配置application.yml
server:
port: 9101
spring:
application:
name: order-ui
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
@SpringBootApplication @EnableDiscoveryClient //服务消费者 @EnableFeignClients //开始Feign客户端功能 public class OrderUiApplication { public static void main(String[] args) { SpringApplication.run(OrderUiApplication.class, args); } }
3.4 使用Feign完成服务调用
-
-
//声明此接口访问的服务名称 @FeignClient("order-provider") public interface OrderUIService { //OrderUIService实例就相当于对order-provider服务访问的客户端 //如果访问的服务中有多个接口,在可以在当前OrderUIService定义多个方法 //每个方法就相当于是对 服务提供者接口的访问 //指定访问的服务中的接口(返回类型与请求的服务中的接口响应数据保持一致) @RequestMapping(value = "order/list",method = RequestMethod.GET) public List<Order> listOrders(); }
在控制器中
@Resource private OrderUIService orderUIService; orderUIService.listOrders();
四、基于Feign的服务调用数据传递
-
Get通过URL传值,需要使用@RequetParam注解
-
-
@FeignClient("order-provider") public interface OrderUIService { //1.如果在FeignClient客户端调用服务时,传递参数没有任何注解声明,则表示body传参 //2.如果服务调用声明了Get方式,但是参数传递使用了body,则此请求会被转换成post请求 //3.Get请求方式只能通过URL传参,参数需要@RequestParam注解声明,否则会被视为body传参 @RequestMapping(value = "order/list",method = RequestMethod.GET) public List<Order> listOrders(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize); //POST请求方式可以通过URL传参,也可以通过body传参 @RequestMapping(value = "order/add",method = RequestMethod.POST) public ResultVO doAdd(Order order); //POST请求方式可以通过URL传参,也可以通过body传参 @RequestMapping(value = "order/add",method = RequestMethod.POST) public ResultVO test(@RequestBody Order order, @RequestParam("pageNum") Integer num, @RequestParam("pageSize") Integer size); }
五、服务的集群部署
服务集群部署以保证服务可用
5.1 服务注册与发现中心的集群搭建(双节点)
-
-
server: port: 8761 spring: application: name: eureka-server eureka: instance: hostname: eureka-peer1 client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://eureka-peer2:8762/eureka
节点2配置
server:
port: 8762
spring:
application:
name: eureka-server
eureka:
instance:
hostname: eureka-peer2
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka-peer1:8761/eureka
修改hosts文件
127.0.0.1 eureka-peer1
127.0.0.1 eureka-peer2
# 127.0.0.1 eureka-peer3
5.2 服务集群搭建
修改端口,启动服务