openfeign实现远程调用

一 openfeign简介

Feign 是声明性(注解)web 服务客户端它使编写 web 服务客户端更加容易请创建一个接口并对其进行注解.它具有可插入注解支持,包括Feign注解和JAXRS注解Feign 还支持可插拔编码器和解码器。Spring cloud 添加了对Spring MVC注解的支持,并支持使用 HttpMessageConverters,Spring Web 中默认使用的注解。Spring cloud集成了Ribbon和Eureka以及 Spring cloud LoadBalancer,以在使用 Feign 时提供负载平衡的 http 客户端。

二、使用

1.分别建立提供者和消费者两个服务模块,模拟消费者调用提供者服务的场景

openfeign实现远程调用_第1张图片

 2.配置文件如下:

server:
  port: 8080

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
spring:
  application:
    name: provider-service
server:
  port: 8081
spring:
  application:
    name: consumer-service
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
ribbon:
  ReadTimeout: 3000 #调用超时时间
  ConnectTimeout: 3000 #连接超时时间

3.provider模块:

需要注意的是,如果要实现带参传入,则传参注解不能省略。

@RestController
public class ProviderController {

    @GetMapping("/provider")
    public String providerService(){
            return "啤酒饮料矿泉水,瓜子花生八宝粥";
    }
}

4.consumer模块:

@RestController
public class ConsumerController {
    @Autowired
    private consumerProviderFeign consumerProviderFeign;

    @GetMapping("/consumer")
    public String consumerService(){
        System.out.println("您有新的客户订单");
        String s = consumerProviderFeign.providerService();
        return s;
    }
}

5.写openfeign接口:

另外,还应在启动类加上注解@EnableFeignClients

@FeignClient(value = "provider-service")
public interface consumerProviderFeign {
    @GetMapping("/provider")
    public String providerService();
}

结果:

openfeign实现远程调用_第2张图片

 6.原理:

feign->ribbon->eureka

你可能感兴趣的:(Java学习,spring,boot,java,spring,cloud)